亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python使用scrapy自動(dòng)爬取多個(gè)網(wǎng)頁(yè)

系統(tǒng) 2249 0

前面介紹的scrapy爬蟲(chóng)只能爬取單個(gè)網(wǎng)頁(yè)。如果我們想爬取多個(gè)網(wǎng)頁(yè)。比如網(wǎng)上的小說(shuō)該如何如何操作呢。比如下面的這樣的結(jié)構(gòu)。是小說(shuō)的第一篇。可以點(diǎn)擊返回目錄還是下一頁(yè)

對(duì)應(yīng)的網(wǎng)頁(yè)代碼:

我們?cè)倏催M(jìn)入后面章節(jié)的網(wǎng)頁(yè),可以看到增加了上一頁(yè)

對(duì)應(yīng)的網(wǎng)頁(yè)代碼:

通過(guò)對(duì)比上面的網(wǎng)頁(yè)代碼可以看到. 上一頁(yè),目錄,下一頁(yè)的網(wǎng)頁(yè)代碼都在

下的 元素的href里面。不同的是第一章只有2個(gè) 元素,從二章開(kāi)始就有3個(gè) 元素。因此我們可以通過(guò)
元素的個(gè)數(shù)來(lái)判決是否含有上一頁(yè)和下一頁(yè)的頁(yè)面。代碼如下

最終得到生成的網(wǎng)頁(yè)鏈接。并調(diào)用Request重新申請(qǐng)這個(gè)網(wǎng)頁(yè)的數(shù)據(jù)

那么在pipelines.py的文件中。我們同樣需要修改下存儲(chǔ)的代碼。如下。可以看到在這里就不是用json. 而是直接打開(kāi)txt文件進(jìn)行存儲(chǔ)

python使用scrapy自動(dòng)爬取多個(gè)網(wǎng)頁(yè)_第1張圖片

完整的代碼如下:在這里需要注意兩次yield的用法。第一次yield后會(huì)自動(dòng)轉(zhuǎn)到Test1Pipeline中進(jìn)行數(shù)據(jù)存儲(chǔ),存儲(chǔ)完以后再進(jìn)行下一次網(wǎng)頁(yè)的獲取。然后通過(guò)Request獲取下一次網(wǎng)頁(yè)的內(nèi)容

python使用scrapy自動(dòng)爬取多個(gè)網(wǎng)頁(yè)_第2張圖片

對(duì)于自動(dòng)爬取網(wǎng)頁(yè)scrapy有個(gè)更方便的方法:CrawlSpider

前面介紹到的Spider中只能解析在start_urls中的網(wǎng)頁(yè)。雖然在上一章也實(shí)現(xiàn)了自動(dòng)爬取的規(guī)則。但略顯負(fù)責(zé)。在scrapy中可以用CrawlSpider來(lái)進(jìn)行網(wǎng)頁(yè)的自動(dòng)爬取。

爬取的規(guī)則原型如下:

class scrapy.contrib.spiders.Rule (link_extractor,?callback=None,?cb_kwargs=None,?follow=None,process_links=None,?process_request=None)

LinkExtractor.:它的作用是定義了如何從爬取到的的頁(yè)面中提取鏈接

Callback指向一個(gè)調(diào)用函數(shù),每當(dāng)從LinkExtractor獲取到鏈接時(shí)將調(diào)用該函數(shù)進(jìn)行處理,該回調(diào)函數(shù)接受一個(gè)response作為第一個(gè)參數(shù)。注意:在用CrawlSpider的時(shí)候禁止用parse作為回調(diào)函數(shù)。因?yàn)镃rawlSpider使用parse方法來(lái)實(shí)現(xiàn)邏輯,因此如果使用parse函數(shù)將會(huì)導(dǎo)致調(diào)用失敗

Follow是一個(gè)判斷值,用來(lái)指示從response中提取的鏈接是否需要跟進(jìn)

在scrapy shell中提取www.sina.com.cn為例

LinkExtractor中的allow只針對(duì)href屬性:

例如下面的鏈接只針對(duì)href屬性做正則表達(dá)式提取

結(jié)構(gòu)如下:可以得到各個(gè)鏈接。

可以通過(guò)restrict_xpaths對(duì)各個(gè)鏈接加以限制,如下的方法:

實(shí)例2:還是以之前的迅讀網(wǎng)為例

提取網(wǎng)頁(yè)中的下一節(jié)的地址:

網(wǎng)頁(yè)地址:

http://www.xunread.com/article/8c39f5a0-ca54-44d7-86cc-148eee4d6615/1.shtml

?下一頁(yè)的的相對(duì)URL地址為2.shtml。

通過(guò)如下規(guī)則提取出來(lái)

>>> item=LinkExtractor(allow=('\d\.shtml')).extract_links(response)

>>> for i in item:

...?? print i.ur

...

http://www.xunread.com/article/8c39f5a0-ca54-44d7-86cc-148eee4d6615/2.shtml

也通過(guò)導(dǎo)航頁(yè)面直接獲取所有章節(jié)的鏈接:

C:\Users\Administrator>scrapy shell http://www.xunread.com/article/8c39f5a0-ca54

-44d7-86cc-148eee4d6615/index.shtml

?

from scrapy.linkextractors import LinkExtractor

?

>>> item=LinkExtractor(allow=('\d\.shtml')).extract_links(response)

>>> for i in item:

...?? print i.url

得到如下全部的鏈接

那么接下來(lái)構(gòu)造在scrapy中的代碼,如下

python使用scrapy自動(dòng)爬取多個(gè)網(wǎng)頁(yè)_第3張圖片

關(guān)鍵的是rules=(Rule(LinkExtractor(allow=( '\d\.shtml' )),callback= 'parse_item' ,follow=True),) 這個(gè)里面規(guī)定了提取網(wǎng)頁(yè)的規(guī)則。以上面的例子為例。爬取的過(guò)程分為如下幾個(gè)步驟:

1 從 http://www.xunsee.com/article/8c39f5a0-ca54-44d7-86cc-148eee4d6615/1.shtml 開(kāi)始,第一調(diào)用parse_item ,用xpath 提取網(wǎng)頁(yè)內(nèi)容,然后用Rule 提取網(wǎng)頁(yè)規(guī)則,在這里提取到2.shtml

2? 進(jìn)入2.shtml.進(jìn)入2.shtml 后再重復(fù)運(yùn)行第一步的過(guò)程。直到Rules 中提取不到任何規(guī)則

我們也可以做一下優(yōu)化,設(shè)置start_urls 為頁(yè)面索引頁(yè)面

http://www.xunsee.com/article/8c39f5a0-ca54-44d7-86cc-148eee4d6615/index.shtml

這樣通過(guò)Rule 可以一下提取出所有的鏈接。然后對(duì)每個(gè)鏈接調(diào)用parse_item 進(jìn)行網(wǎng)頁(yè)信息提取。這樣的效率比從1.shtml 要高效很多。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 377p亚洲欧洲日本大胆色噜噜 | 色综合久久一本首久久 | 精品日韩在线观看 | 99尹人香蕉国产免费天天在线 | 国产一区二区三区免费在线观看 | 99热免费精品 | 国产波波社区精品视频 | 国产a一级毛片午夜剧场14 | 午夜欧美视频 | 欧美色综合高清免费 | 操美女免费看 | 日韩视频亚洲 | 免费香蕉成视频成人网 | 成熟热自由日本语亚洲人 | 91国语精品自产拍在线观看一 | 日韩字幕 | 免费一级a毛片在线播放视 免费一级成人毛片 | 综合久久影院 | 亚洲国产欧美一区二区欧美 | 九九热视频免费 | 久久中文字幕久久久久91 | 久久久久国产精品四虎 | 高清在线一区二区三区亚洲综合 | 91成人国产网站在线观看 | 日韩中文字幕一区二区不卡 | 奇米影视888狠狠狠777九色 | 国产午夜精品久久久久免费视 | 国产欧美二区三区 | 在线欧美v日韩v国产精品v | 成人久久久观看免费毛片 | 中文字幕第一页国产 | 中国一级毛片免费观看 | 久久久久久一级毛片免费无遮挡 | 久久久精品久久久久三级 | 99久久综合狠狠综合久久一区 | 五月伊人| 国产精品视屏 | 9999热视频 | 97精品久久天干天天蜜 | 免费成人高清视频 | 国产色婷婷免费视频 |