<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)頁全部文章信息(中篇)

          共 1788字,需瀏覽 4分鐘

           ·

          2020-11-17 01:45

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

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

          上有青冥之長天,下有淥水之波瀾。

          /前言/

          ???在上一篇文章中:如何利用Scrapy爬蟲框架抓取網(wǎng)頁全部文章信息(上篇),我們已經(jīng)獲取到了文章的詳情頁鏈接,但是提取到URL之后,如何將其交給Scrapy去進(jìn)行下載呢?下載完成之后又如何去調(diào)用我們自己定義的解析函數(shù)呢?此時(shí)就需要用到Scrapy框架中的另外一個(gè)類Request。具體教程如下。


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

          ??? 1、這個(gè)Request存放的位置在scrapy.http下,如下圖所示,可以直接導(dǎo)入即可。

          ????我們需要將這個(gè)Request對象交給Scrapy,爾后Scrapy爬蟲框架就會(huì)幫助我們?nèi)ミM(jìn)行下載了。

          ??? 2、Request對象里有初始化參數(shù)url以及回調(diào)函數(shù)callback,當(dāng)然還有其他的參數(shù),這里不鋪開講。我們將獲取到的文章鏈接URL傳給這個(gè)初始化參數(shù)url,之后就可以構(gòu)建Request啦。在這里需要說明的是,這個(gè)Request是文章詳情頁的頁面,而不是文章的列表頁。對于文章詳情頁,那么接下來,我們需要對每篇文章的具體信息進(jìn)行提取。

          ??? 3、基于之前文章的鋪墊,提取網(wǎng)頁的目標(biāo)信息,可以將提取目標(biāo)信息的表達(dá)式部分封裝成一個(gè)函數(shù)parse_detail(),其作為一個(gè)callback回調(diào)函數(shù),用于提取文章的具體字段。這里以CSS選擇器為例,如下圖所示。如果想以Xpath選擇器進(jìn)行提取的話也沒有問題,具體實(shí)現(xiàn)可以參考?xì)v史文章中關(guān)于CSS和Xpath選擇器用法的文章。具體的實(shí)現(xiàn)過程,在此暫不贅述。

          ????

          ????4、爾后將Request類完善一下,加入callback參數(shù),記得在parse_detail前邊加入self,表示在當(dāng)前類當(dāng)中的,不然的話就會(huì)報(bào)錯(cuò)的。此外,parse_detail雖然為函數(shù),但是在此處務(wù)必不要加括號,這就是回調(diào)函數(shù)的特色。


          ??? 5、細(xì)心的小伙伴可能已經(jīng)注意到上圖中Request類中的url部分很復(fù)雜,加入了parse.urljoin()函數(shù),其實(shí)這個(gè)也是個(gè)小技巧,這里簡單說一下,希望對小伙伴們有幫助。parse.urljoin()函數(shù)的作用是將相對的地址組合成一個(gè)完整的url,有的時(shí)候網(wǎng)頁標(biāo)簽中給我們呈現(xiàn)的并不是一個(gè)完整的URL鏈接或者完整的域名,而是省去了網(wǎng)頁的域名,如果沒有域名的話,默認(rèn)的域名是當(dāng)前網(wǎng)頁的域名(即response.url),此時(shí)我們就需要進(jìn)行URL的拼接,形成一個(gè)完整的URL地址,以方便正常訪問。


          ??? 6、Request類初始化之后,如何將它交給Scrapy來進(jìn)行下載呢?其實(shí)很簡單,只需要在前面輸入一個(gè)yield關(guān)鍵字即可,其作用是將Request里邊的URL交給Scrapy去進(jìn)行下載。

          ????

          ????至此,解析列表頁中所有文章的URL并交給Scrapy進(jìn)行下載的步驟已經(jīng)完成,接下來我們需要完成的是如何提取下一頁的URL并交給Scrapy進(jìn)行下載。下一篇文章將著重解決這個(gè)問題,敬請期待~~~


          /小結(jié)/

          ????本文基于Scrapy爬蟲框架,利用CSS選擇器和Xpath選擇器解析列表頁中所有文章的URL,并交給Scrapy進(jìn)行下載,至此數(shù)據(jù)采集基本功能已經(jīng)完成了。下一篇文章將完成如何提取下一頁的URL并交給Scrapy進(jìn)行下載,敬請期待。

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

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

          往期精彩文章推薦:

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

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

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

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 54
          點(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>
                  大荫蒂视频另类XX | 欧美性 XX XX | 夜夜躁狠狠躁日日躁视频 | 亚洲少妇精品 | 海外网站天天爽夜夜爽专业操老外 |