爬蟲思路——Xpath(douban movie 250)

需求:

豆瓣top250電影:https://movie.douban.com/top250

爬取 電影的名字 評(píng)分 引言 詳情頁(yè)的url 1-10頁(yè) 保存到csv文件當(dāng)中 (下圖綠色框內(nèi)容為所需爬去內(nèi)容)


總體思路把握:

思路分析1a


思路分析上接1a

需求拆解:

需要爬去1-10頁(yè)(共計(jì)250部電影信息)

存在遍歷每一頁(yè)獲得每一頁(yè)數(shù)據(jù)的需求


爬取 電影的名字 評(píng)分 引言 詳情頁(yè)的url

最后我們要得到的是250部電影,每部電影包含的信息是Name, Score, Quote, Links

可以認(rèn)為每一部電影信息就是一個(gè)字典:{‘Name’ : '...', 'Score': '...', 'Quote': '...', ‘Links’: '...'}

以字典Key-Value? 形式表示。

而所有電影信息可以是列表嵌套字典的格式,如下:

[{電影1字典}, {電影2字典},.....,{電影250字典}]


保存到CSV文件中

因?yàn)槊坎侩娪靶畔⑹且宰值湫问酱鎯?chǔ)信息的。

因此可以使用csv.Dictwriter(object, titile) 方法直接寫入字典信息


需求拆解總結(jié):

每部電影信息都是一個(gè)字典,每一個(gè)html頁(yè)面有25部電影 --> 第一層遍歷后獲取每一頁(yè)25部電影的列表: [{該頁(yè)第1部電影信息}, {該頁(yè)第2部電影信息}, ... , {該頁(yè)第25部電影信息}]

然后將這一頁(yè)的結(jié)果列表加入到總體結(jié)果列表,然后遍歷下一頁(yè)面 --> 第二層遍歷獲取總共10頁(yè)所有信息


分析1-10頁(yè)URL地址規(guī)律

對(duì)于目標(biāo)URL進(jìn)行分析:

第一頁(yè):https://movie.douban.com/top250

第二頁(yè):https://movie.douban.com/top250?start=25&filter=

第三頁(yè):https://movie.douban.com/top250?start=50&filter=

第四頁(yè):https://movie.douban.com/top250?start=75&filter=

那么反過(guò)頭去重新試試第一頁(yè)是否也符合規(guī)律:https://movie.douban.com/top250?start=0&filter=

發(fā)現(xiàn)第一頁(yè)也是適用的,那么很容易總結(jié)出規(guī)律,每一頁(yè)25部電影,以start = PageNum * 25 作為偏移量,修改URL地址即可

可以使用如下代碼進(jìn)行遍歷url:

base_url = 'https://movie.douban.com/top250?start={}&filter='

for i in range(10):

????req_url =?base_url .format ( i * 25)


分析頁(yè)面

鼠標(biāo)右鍵-->檢查,找到所需爬去內(nèi)容在element中的位置,class='info'

在網(wǎng)頁(yè)源代碼中尋宅此標(biāo)簽,并確認(rèn)所有需要爬去的內(nèi)容是否在其中:

每一個(gè)網(wǎng)頁(yè),25部電影信息,分別在25個(gè) li標(biāo)簽內(nèi):而我們定義的<div class="info"> 存在于每一個(gè) li 子標(biāo)簽下

分級(jí)如下:li --> <div class="item"> --> <div class="info">? ? (相同顏色箭頭為同一級(jí)兄弟標(biāo)簽關(guān)系,平級(jí))

獲取網(wǎng)頁(yè)源代碼

使用requests模塊請(qǐng)求,并獲取html網(wǎng)頁(yè)源代碼并轉(zhuǎn)換成字符串格式

匹配最小父級(jí)標(biāo)簽


匹配并列子級(jí)標(biāo)簽 & 定義子級(jí)標(biāo)簽內(nèi)解析公式(xpath)&遍歷子級(jí)獲取需求數(shù)據(jù) (黃色框選內(nèi)容)


遍歷每一頁(yè)網(wǎng)頁(yè)(1-10頁(yè))


保存數(shù)據(jù)至文檔


完整代碼如下:


執(zhí)行結(jié)果:


用excel打開:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容