馬上就要過年啦
過年在家干啥咧 準備好被七大姑八大姨輪番「轟炸」了沒? 你的內(nèi)心 os 是這樣的 但實際上你是這樣的 應(yīng)付完之后 閑暇時刻不妨看看電影 接下來咱們就來爬取豆瓣上評分最高的 250部電影 這次我們就要來使用上次說的
BeautifulSoup + Reuqests
進行爬取啦 這次
我們將爬取到的內(nèi)容存放到 excel 吧 那么 接下來就是 學(xué)習(xí) python 的正確姿勢 我們還是老樣子 先摸清對方的底 知己知彼 百戰(zhàn)不殆 首先打開我們的目標鏈接 https://movie.douban.com/top250 可以看到這樣一個網(wǎng)頁 每一頁顯示了 25 條數(shù)據(jù) 當(dāng)我們點擊下一頁的時候 鏈接請求參數(shù)變了 https://movie.douban.com/top250?start=25&filter= 我們一眼就看的出來 這里就是從第 25 條數(shù)據(jù)開始加載的 所以 我們可以使用這個 start=25 來做變量 實現(xiàn)翻頁獲取信息 接下來我們來看下我們要的主要信息 電影名稱 電影圖片 電影排名 電影評分 電影作者 電影簡介 等會我們可以使用 BeautifulSoup 超簡單獲取 一頓分析之后 我們就開始擼代碼啦 主要思路 請求豆瓣的鏈接獲取網(wǎng)頁源代碼 然后使用 BeatifulSoup 拿到我們要的內(nèi)容 最后就把數(shù)據(jù)存儲到 excel 文件中 def main(page): url = 'https://movie.douban.com/top250?start='+ str(page*25)+'&filter=' html = request_douban(url) soup = BeautifulSoup(html, 'lxml') save_to_excel(soup) 請求豆瓣電影 def request_douban(url): try: response = requests.get(url) if response.status_code == 200: return response.text except requests.RequestException: return None 獲取到的主要源代碼 ...
<ol class="grid_view"> <li> <div class="item"> <div class="pic"> <em class="">1</em> <a href="https://movie.douban.com/subject/1292052/"> <img width="100" alt="肖申克的救贖" src="https://img3./view/photo/s_ratio_poster/public/p480747492.jpg" class=""> </a> </div> <div class="info"> <div class="hd"> <a href="https://movie.douban.com/subject/1292052/" class=""> <span class="title">肖申克的救贖</span> <span class="title"> / The Shawshank Redemption</span> <span class="other"> / 月黑高飛(港) / 刺激1995(臺)</span> </a>
<span class="playable">[可播放]</span> </div> <div class="bd"> <p class=""> 導(dǎo)演: 弗蘭克·德拉邦特 Frank Darabont 主演: 蒂姆·羅賓斯 Tim Robbins /...<br> 1994 / 美國 / 犯罪 劇情 </p>
<div class="star"> <span class="rating5-t"></span> <span class="rating_num" property="v:average">9.6</span> <span property="v:best" content="10.0"></span> <span>1286755人評價</span> </div>
<p class="quote"> <span class="inq">希望讓人自由。</span> </p> </div> </div> </div> </li>
... BeatifulSoup 解析 list = soup.find(class_='grid_view').find_all('li')
for item in list: item_name = item.find(class_='title').string item_img = item.find('a').find('img').get('src') item_index = item.find(class_='').string item_score = item.find(class_='rating_num').string item_author = item.find('p').text item_intr = item.find(class_='inq').string
# print('爬取電影:' + item_index + ' | ' + item_name +' | ' + item_img +' | ' + item_score +' | ' + item_author +' | ' + item_intr ) print('爬取電影:' + item_index + ' | ' + item_name +' | ' + item_score +' | ' + item_intr ) 打印一下 爬取電影:1 | 肖申克的救贖 | 9.6 | 希望讓人自由。 爬取電影:2 | 霸王別姬 | 9.6 | 風(fēng)華絕代。 爬取電影:3 | 這個殺手不太冷 | 9.4 | 怪蜀黍和小蘿莉不得不說的故事。 爬取電影:4 | 阿甘正傳 | 9.4 | 一部美國近現(xiàn)代史。 爬取電影:5 | 美麗人生 | 9.5 | 最美的謊言。 爬取電影:6 | 泰坦尼克號 | 9.3 | 失去的才是永恒的。 爬取電影:7 | 千與千尋 | 9.3 | 最好的宮崎駿,最好的久石讓。 爬取電影:8 | 辛德勒的名單 | 9.5 | 拯救一個人,就是拯救整個世界。 爬取電影:9 | 盜夢空間 | 9.3 | 諾蘭給了我們一場無法盜取的夢。 爬取電影:10 | 機器人總動員 | 9.3 | 小瓦力,大人生。 爬取電影:11 | 忠犬八公的故事 | 9.3 | 永遠都不能忘記你所愛的人。 ... 爬取電影:21 | 無間道 | 9.1 | 香港電影史上永不過時的杰作。 爬取電影:22 | 當(dāng)幸福來敲門 | 9.0 | 平民勵志片。 爬取電影:23 | 瘋狂動物城 | 9.2 | 迪士尼給我們營造的烏托邦就是這樣,永遠善良勇敢,永遠出乎意料。 爬取電影:24 | 觸不可及 | 9.2 | 滿滿溫情的高雅喜劇。 爬取電影:25 | 怦然心動 | 9.0 | 真正的幸福是來自內(nèi)心深處。 拿到數(shù)據(jù)啦 循環(huán)獲取 10 頁的所有數(shù)據(jù) 來個循環(huán)吧 for i in range(0, 10): main(i) 獲取到數(shù)據(jù)當(dāng)然是要存儲了 導(dǎo)入 excel 的庫 import xlwt創(chuàng)建一個 excel 的 sheet 每一列就是我們要的關(guān)鍵內(nèi)容 book=xlwt.Workbook(encoding='utf-8',style_compression=0)
sheet=book.add_sheet('豆瓣電影Top250',cell_overwrite_ok=True) sheet.write(0,0,'名稱') sheet.write(0,1,'圖片') sheet.write(0,2,'排名') sheet.write(0,3,'評分') sheet.write(0,4,'作者') sheet.write(0,5,'簡介') 將爬取到的所有數(shù)據(jù)寫入 excel sheet.write(n, 0, item_name) sheet.write(n, 1, item_img) sheet.write(n, 2, item_index) sheet.write(n, 3, item_score) sheet.write(n, 4, item_author) sheet.write(n, 5, item_intr) 最后來個保存 book.save(u'豆瓣最受歡迎的250部電影.xlsx') 運行一下吧 生成了一個 excel 文件 老規(guī)矩 小帥b把本篇涉及到的源代碼放在后臺了 公眾號發(fā)送「250」獲取 完 再見 近期文章 python爬蟲07 | 有了 BeautifulSoup ,媽媽再也不用擔(dān)心我的正則表達式了
python爬蟲06 | 你的第一個爬蟲,爬取當(dāng)當(dāng)網(wǎng) Top 500 本五星好評書籍
python爬蟲05 | 年輕人,不會正則表達式你睡得著覺?有點出息沒有?
掃一掃 學(xué)習(xí) Python 沒煩惱 好看的人都點了
|