鍍金池/ 問(wèn)答/人工智能  數(shù)據(jù)分析&挖掘  Python/ 如何利用scrapy爬取一個(gè)網(wǎng)站后將網(wǎng)站中的鏈接再次爬取

如何利用scrapy爬取一個(gè)網(wǎng)站后將網(wǎng)站中的鏈接再次爬取

我現(xiàn)在想通過(guò)一個(gè)網(wǎng)站,先爬取這個(gè)網(wǎng)站上的鏈接,然后爬取這些鏈接上的信息
我現(xiàn)在想的是用一個(gè)爬蟲(chóng)把網(wǎng)站的鏈接存到一個(gè)文檔上,然后用另一個(gè)爬蟲(chóng)對(duì)文檔上的鏈接進(jìn)行讀操作,然后進(jìn)行爬取,有沒(méi)有什么簡(jiǎn)單辦法

回答
編輯回答
茍活

一個(gè)爬蟲(chóng)類(lèi)就可以解決。

yield Request(URL,callback)返回第一次爬取的鏈接。

然后用callback函數(shù)對(duì)返回鏈接進(jìn)行再次爬取,接著再對(duì)爬取數(shù)據(jù)處理給item或者繼續(xù)yield Request也行。

callback就是回調(diào)的函數(shù)名。

不用存文檔里,那樣速度太慢了。


例子:類(lèi)似于這種,有點(diǎn)偽代碼。

class MySpider(scrapy.Spider):
    name = 'zhilian_spider'
    allowed_domains = ['example.com']
    start_urls = [
        'http://www.zhaopin.com/citymap.html']
    yield scrapy.Request(url, callback=self.parse)

    def parse(self, response):
        ...
        yield scrapy.Request(url, callback=self.parse_jobs, dont_filter=True)

    def parse_jobs(self, response):
        ...
            yield item

建議研究一下scrapy
官網(wǎng)內(nèi)容:http://scrapy-chs.readthedocs...

2017年1月17日 11:56