爬蟲系列4 scrapy技術高階之多頁面爬取

2021-07-13 06:49:36 字數 1030 閱讀 9992

多頁面爬取有兩種形式。

1)從某乙個或者多個主頁中獲取多個子頁面的url列表,parse()函式依次爬取列表中的各個子頁面。

2)從遞迴爬取,這個相對簡單。在scrapy中只要定義好初始頁面以及爬蟲規則rules,就能夠實現自動化的遞迴爬取。

獲取子頁面url列表的**示例如下:

#先獲取url list,然後根據list爬取各個子頁面內容

fromtutorial.items import dmozitem

classdmozspider(scrapy.spider):

name = "dmoz"

allowed_domains = ["dmoz.org"]

start_urls =["",]

def parse(self, response):

for href inresponse.css("ul.directory.dir-col > li > a::attr('href')"):

#獲取當前頁面的url:respone.url

#通過拼接response.url和href.extract(),將相對**轉換為絕對**

url =response.urljoin(response.url, href.extract())

yield scrapy.request(url, callback=self.parse_dir_contents)

#負責子頁面內容的爬取

def parse_dir_contents(self, response):

for sel in response.xpath('//ul/li'):

item = dmozitem()

item['title'] =sel.xpath('a/text()').extract()

item['link'] = sel.xpath('a/@href').extract()

item['desc'] =sel.xpath('text()').extract()

yield item

黑馬python2 7的爬蟲4 Scrapy框架

期末考試了,出差,不曉得有沒有時間寫哦,先開個頭 注意,python2.x預設編碼環境是ascii,當和取回的資料編碼格式不一致時,可能會造成亂碼 我們可以指定儲存內容的編碼格式,一般情況下,我們可以在 最上方新增 import sys reload sys sys.setdefaultencodi...

4 scrapy的管道pipelines使用詳解

process item self,item,spider open spider self,spider 在爬蟲開啟的時候僅執行一次 close spider self,spider 在爬蟲關閉的時候僅執行一次 易錯點 這裡需要返回item,而且是在if外,當該管道在setting檔案中排第乙個時...

網頁爬蟲 scrapy高階

現在的大 基本除了pc端都會有移動端,所以需要先確定爬哪個。www.weibo.com,主站 www.weibo.cn,簡化版 m.weibo.cn,移動版 上面三個中,主站的微博資料是動態載入的,意味著光看原始碼是看不到資料的,想爬的話要麼搞清楚其api訪問情況,要麼模擬js,那樣的話花的力氣可能...