一、爬取前的準(zhǔn)備工作
1. 選擇一個(gè)網(wǎng)站:https://www.douban.com
2.?在進(jìn)行爬取之前,我們先去看看它的robots協(xié)議。
協(xié)議網(wǎng)址:https://www.douban.com/robots.txt
3.?進(jìn)入首頁(yè)?https://movie.douban.com/top250?start=0&filter=?,打開檢查工具,在Elements里查看這個(gè)網(wǎng)頁(yè),是什么結(jié)構(gòu)。
點(diǎn)擊開發(fā)者工具左上角的小箭頭,選中“肖申克的救贖”,這樣就定位了電影名的所在位置,審查元素中顯示<span class="title">:<span>標(biāo)簽內(nèi)的文本,class屬性;推薦語和評(píng)分也是如此,<span class='inq'>,<span class='rating_num'>;序號(hào):<em class>,<em>標(biāo)簽內(nèi)的文本,class屬性;推薦語<span class='inq'>;鏈接是<a>標(biāo)簽里href的值。最后,它們最小共同父級(jí)標(biāo)簽,是<li>。
4. 我們?cè)贀Q個(gè)電影驗(yàn)證下找的規(guī)律是否正確。
5.?check后,我們?cè)倏匆还?0頁(yè),每頁(yè)的url有什么相關(guān)呢?
第1頁(yè):https://movie.douban.com/top250?start=0&filter=
第3頁(yè):https://movie.douban.com/top250?start=50&filter=
第7頁(yè):https://movie.douban.com/top250?start=150&filter=
發(fā)現(xiàn)只有start后面是有變化,規(guī)律就是第N頁(yè),start=(N-1)*25
6. 基于以上分析,我們有兩種寫爬蟲的思路。
思路一:先爬取最小共同父級(jí)標(biāo)簽?<li>,然后針對(duì)每一個(gè)父級(jí)標(biāo)簽,提取里面的序號(hào)/電影名/評(píng)分/推薦語/鏈接。
思路二:分別提取所有的序號(hào)/所有的電影名/所有的評(píng)分/所有的推薦語/所有的鏈接,然后再按順序一一對(duì)應(yīng)起來。
二、代碼實(shí)現(xiàn)過程(思路一)
import requests# 引用requests庫(kù)
from bs4 import BeautifulSoup# 引用BeautifulSoup庫(kù)
res_films=requests.get('https://movie.douban.com/')# 獲取數(shù)據(jù)
bs_films=BeautifulSoup(res_films.text,'html.parser')# 解析數(shù)據(jù)
fil_title=bs_films.find_all(class_='title')
fil_num=bs_films.find_all(class_="")
list_all=[]# 創(chuàng)建一個(gè)空列表,用于存儲(chǔ)信息
for x in range(len(fil_num)):
? ? list_films=[fil_num[x].text[18:-14],fil_title[x].find('a')['href']]
? ? list_all.append(list_films)
? ? print(list_all)