您好,登錄后才能下訂單哦!
這篇文章主要介紹在Scrapy中怎么利用Xpath選擇器從網(wǎng)頁中采集目標(biāo)數(shù)據(jù),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
/具體實(shí)現(xiàn)/
1、針對(duì)標(biāo)題,在上篇文章中就有提及,其Xpath表達(dá)式有多種,任選其一即可,在scrapy shell腳本下進(jìn)行調(diào)試,得到標(biāo)題的提取方式,并寫入到爬蟲主體文件中。
2、接下來是發(fā)布日期的提取,仍然是以交互式的方式實(shí)現(xiàn)網(wǎng)頁與源碼之間的交互,如下圖所示。
3、而且標(biāo)簽“entry-meta-hide-on-mobile”具有全局唯一性,可以很方便的定位到元素。
4、根據(jù)網(wǎng)頁結(jié)構(gòu),我們可輕易的寫出發(fā)布日期的Xpath表達(dá)式,可以在scrapy shell中先進(jìn)行測(cè)試,再將選擇器表達(dá)式寫入爬蟲文件中,詳情如下圖所示。
這里有部分雜質(zhì)信息,需要利用strip()和replace()函數(shù)剔除多余的雜質(zhì),還日期一個(gè)“清白”。
5、關(guān)于文章主題標(biāo)簽的Xpath表達(dá)式,可以看到其在網(wǎng)頁結(jié)構(gòu)上處于日期的下方,如下圖所示。
因此可以通過更改一下發(fā)布日期的Xpath表達(dá)式,即可獲取到文章主題標(biāo)簽。
6、文章主題標(biāo)簽處于a標(biāo)簽下,如下圖所示。
獲取到整個(gè)列表之后,利用join函數(shù)將數(shù)組中的元素以逗號(hào)連接生成一個(gè)新的字符串叫tags,然后寫入Scrapy爬蟲文件中去。
7、對(duì)于點(diǎn)贊數(shù),其分析方法同之前一致,找到唯一的一個(gè)標(biāo)簽“vote-post-up”即可定位到數(shù)據(jù)。
8、細(xì)心的小伙伴可能會(huì)看到“vote-post-up”屬性并不是class標(biāo)簽中唯一一個(gè)屬性,所以一開始的Xpath表達(dá)式匹配的內(nèi)容為空。
這里給大家安利一個(gè)小技巧,如果標(biāo)簽中存在多個(gè)屬性,且屬性是唯一的時(shí)候,可以利用contains函數(shù)進(jìn)行助攻,其用法是'//span[contains(@class,"vote-post-up"),務(wù)必要多加練習(xí),否則容易忘記。根據(jù)網(wǎng)頁結(jié)構(gòu)寫出Xpath表達(dá)式,調(diào)試的過程如下圖所示。
取出的點(diǎn)贊數(shù)是個(gè)字符串,需要利用int()將其強(qiáng)制轉(zhuǎn)換為數(shù)字。
/具體實(shí)現(xiàn)/
9、根據(jù)點(diǎn)贊數(shù)采集的方法,我們可以很快的定位到收藏?cái)?shù),其對(duì)應(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)試,代碼也很簡(jiǎn)單,如下圖所示。
爾后將該代碼放入到爬蟲主體文件中即可,記得將“15 收藏”這部分替換成collection_num即可。
12、評(píng)論數(shù)相對(duì)簡(jiǎn)單一些,其有專門的一個(gè)標(biāo)簽,如下圖所示。
13、需要注意的是評(píng)論數(shù)這里的標(biāo)簽不是class,而是href,需要和網(wǎng)頁上對(duì)應(yīng),否則取出的值為空列表。
14、同收藏?cái)?shù)一樣,仍然要以正則表達(dá)式的形式去匹配數(shù)字,可以直接復(fù)制收藏?cái)?shù)的代碼,然后將收藏?cái)?shù)collection_num改為評(píng)論數(shù)的comment_num即可。
15、關(guān)于正文的提取,不同的網(wǎng)頁有不同的結(jié)構(gòu),而且相對(duì)復(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é)果。
以上是“在Scrapy中怎么利用Xpath選擇器從網(wǎng)頁中采集目標(biāo)數(shù)據(jù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。