在Scrapy中如何利用Xpath選擇器從網(wǎng)頁中采集目標(biāo)數(shù)據(jù)——詳細(xì)教程(下篇)
/前言/
前幾天給大家分享了在Scrapy中如何利用Xpath選擇器從網(wǎng)頁中采集目標(biāo)數(shù)據(jù)——詳細(xì)教程(上篇),沒來得及上車的小伙伴可以戳進(jìn)去看看,今天繼續(xù)上篇的內(nèi)容往下進(jìn)行。
/具體實(shí)現(xiàn)/
9、根據(jù)點(diǎn)贊數(shù)采集的方法,我們可以很快的定位到收藏?cái)?shù),其對應(yīng)的網(wǎng)頁結(jié)構(gòu)稍微有些不同,但是分析方法是一致的,不再贅述,如下圖所示。
10、這里直接給出調(diào)試的代碼,如下圖所示。
11、不過我們需要的是其中的數(shù)字,這時(shí)候就可以利用正則表達(dá)式進(jìn)行匹配,關(guān)于正則表達(dá)式的文章,之前有過連載,不熟悉正則表達(dá)式的小伙伴可以翻看歷史文章,有詳細(xì)說明的。在Pycharm中進(jìn)行調(diào)試,代碼也很簡單,如下圖所示。
爾后將該代碼放入到爬蟲主體文件中即可,記得將“15 收藏”這部分替換成collection_num即可。
12、評論數(shù)相對簡單一些,其有專門的一個(gè)標(biāo)簽,如下圖所示。
13、需要注意的是評論數(shù)這里的標(biāo)簽不是class,而是href,需要和網(wǎng)頁上對應(yīng),否則取出的值為空列表。
14、同收藏?cái)?shù)一樣,仍然要以正則表達(dá)式的形式去匹配數(shù)字,可以直接復(fù)制收藏?cái)?shù)的代碼,然后將收藏?cái)?shù)collection_num改為評論數(shù)的comment_num即可。
15、關(guān)于正文的提取,不同的網(wǎng)頁有不同的結(jié)構(gòu),而且相對復(fù)雜,這里不做細(xì)究,整體目標(biāo)是將網(wǎng)頁內(nèi)容和標(biāo)簽均提取出來。分析網(wǎng)頁結(jié)構(gòu),發(fā)現(xiàn)正文內(nèi)容在“entry”標(biāo)簽下,如下圖所示。
16、之后在scrapyshell調(diào)試,可以得到內(nèi)容的Xpath表達(dá)式,如下圖所示。
17、到這里,該網(wǎng)頁中的信息提取的差不多了,結(jié)合上面的分析和Xpath表達(dá)式,我們得到的整體代碼如下圖所示。
18、爾后進(jìn)行Debug調(diào)試,查看代碼中獲取的內(nèi)容,如下圖所示,十分清晰。
19、下圖是控制臺(tái)部分顯示出的變量結(jié)果,與代碼中顯示的內(nèi)容和網(wǎng)頁上的信息都是保持一致的。
至此,關(guān)于Xpath表達(dá)式的具體應(yīng)用教程先告一段落??傮w來看,我們需要利用F12快捷鍵來審查網(wǎng)頁元素,爾后分析網(wǎng)頁結(jié)構(gòu)并進(jìn)行交互,然后根據(jù)網(wǎng)頁結(jié)構(gòu)寫出Xpath表達(dá)式,習(xí)慣性的結(jié)合scrapy shell進(jìn)行調(diào)試,得到調(diào)優(yōu)的表達(dá)式,寫入爬蟲文件中去,最后執(zhí)行爬蟲程序或者Debug調(diào)試查看最終的數(shù)據(jù)采集結(jié)果。
/小結(jié)/
本文基于Xpath理論基礎(chǔ),主要介紹了Scrapy爬蟲框架中利用Xpath選擇器提取某個(gè)網(wǎng)頁中目標(biāo)數(shù)據(jù)的方法,結(jié)合scrapy shell進(jìn)行調(diào)試,得到調(diào)優(yōu)的表達(dá)式,寫入爬蟲文件中去,希望對大家的學(xué)習(xí)有幫助。
想學(xué)習(xí)更多關(guān)于Python的知識,可以參考學(xué)習(xí)網(wǎng)址:http://pdcfighting.com/,點(diǎn)擊閱讀原文,可以直達(dá)噢~