<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何利用Scrapy爬蟲框架抓取網(wǎng)頁全部文章信息(下篇)

          共 1715字,需瀏覽 4分鐘

           ·

          2020-11-17 01:44

          擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          天長路遠(yuǎn)魂飛苦,夢魂不到關(guān)山難。

          /前言/

          ???在上篇文章中,如何利用Scrapy爬蟲框架抓取網(wǎng)頁全部文章信息(中篇)如何利用Scrapy爬蟲框架抓取網(wǎng)頁全部文章信息(上篇),我們已經(jīng)解析了列表頁中所有文章的URL并交給Scrapy進(jìn)行下載,這篇文章我們將提取下一頁的URL并交給Scrapy進(jìn)行下載,具體教程如下。


          /具體實(shí)現(xiàn)/

          ??? 1、首先在網(wǎng)頁中先找到“下一頁”的相關(guān)鏈接,如下圖所示。與網(wǎng)頁進(jìn)行交互,找到“下一頁”的URL。


          ????可以看到下一頁的鏈接存在與a標(biāo)簽下的nextpage-numbers屬性下面的href標(biāo)簽中,而且該屬性是唯一的,可以很輕易的定位到該鏈接。


          ??? 2、可以在scrapyshell中進(jìn)行調(diào)試,爾后再將滿足條件的表達(dá)式寫入到代碼中去,如下圖所示。

          ?

          ????上圖中兩種方式都可以提取到目標(biāo)信息。比較推薦的是第二種方式,其中.next.page-numbers代表的是同一個(gè)class下有兩個(gè)屬性,可以更快更準(zhǔn)確的定位到標(biāo)簽,需要注意的是兩個(gè)屬性直接直接用點(diǎn)號進(jìn)行連接,無任何的空格,初學(xué)者容易犯錯(cuò)。另外,extract_first("")這個(gè)函數(shù)在之前的文章中提及過,其默認(rèn)值為空,如果沒有匹配到目標(biāo)信息的話,則返回None。


          ??? 3、取到了下一頁的鏈接之后,需要對其做個(gè)判斷,以防萬一,具體的代碼如下圖所示。

          ????

          ????至此,我們已經(jīng)提取了下一頁的URL,并交給Scrapy進(jìn)行下載。需要注意的是除了URL拼接部分之后,callback回調(diào)函數(shù)在這里是parse()函數(shù),表示回調(diào)下一頁的文章列表頁,而不是文章詳情頁面,這點(diǎn)需要特別注意。


          ????4、接下來,我們就可以對整個(gè)爬蟲進(jìn)行調(diào)試了,在爬蟲主體文件中設(shè)置好斷點(diǎn),如下圖所示,之后在main.py文件中點(diǎn)擊運(yùn)行Debug,


          ??? 5、稍等片刻,等待調(diào)試的結(jié)果出來,如下圖所示,結(jié)果鮮明。


          ??? 6、到這里,我們基本上已經(jīng)完成所有文章的提取,簡單的回顧一下整個(gè)爬取過程。首先我們在parse()函數(shù)中獲取到文章的URL,爾后將其交給Scrapy去進(jìn)行下載,下載完成之后,Scrapy再去調(diào)用parse_detail()函數(shù)去提取網(wǎng)頁中的目標(biāo)信息,這個(gè)頁面提取完成之后,再進(jìn)行下一個(gè)頁面的信息提取,并將下一頁的URL交給Scrapy去進(jìn)行下載,再回調(diào)parse()函數(shù)以提取出下一頁中文章列表的URL,如此往復(fù)的進(jìn)行迭代,一直到最后一頁為止,整個(gè)爬蟲才會(huì)停止。

          ??? 7、利用Scrapy爬蟲框架,我們便可以獲取到整個(gè)網(wǎng)站的全部文章內(nèi)容,中間的具體下載實(shí)現(xiàn)完全不用經(jīng)過我們手動(dòng)去進(jìn)行,有木有感受到Scrapy爬蟲的強(qiáng)大咧?

          ????目前我們只是遍歷了整個(gè)網(wǎng)站,知道了目標(biāo)信息的提取方法,暫時(shí)還沒有將目標(biāo)數(shù)據(jù)保存到本地或者數(shù)據(jù)庫當(dāng)中去,后邊的文章我們繼續(xù)再約~~~


          /小結(jié)/

          ????本文基于Scrapy爬蟲框架,利用CSS選擇器和Xpath選擇器解析列表頁中所有文章的URL,遍歷整個(gè)網(wǎng)站進(jìn)行數(shù)據(jù)采集,至此,我們已經(jīng)可以實(shí)現(xiàn)全網(wǎng)文章的數(shù)據(jù)采集了

          ??? 想學(xué)習(xí)更多關(guān)于Python的知識(shí),可以參考學(xué)習(xí)網(wǎng)址:http://pdcfighting.com/,點(diǎn)擊閱讀原文,可以直達(dá)噢~

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 22
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲成人电影AV | 精品成人在线视频 | 大香蕉伊久| 99热7| 亚洲天堂50p |