python - scrapy url去重
問題描述
請問scrapy是url自動去重的嗎?比如下面這段代碼,為什么運行時start_urls里面的重復url會重復爬取了?
class TestSpider(scrapy.Spider): name = 'test' allowed_domains = ['baidu.com'] start_urls = [’http://baike.baidu.com/fenlei/%E5%A8%B1%E4%B9%90%E4%BA%BA%E7%89%A9’, ’http://baike.baidu.com/fenlei/%E5%A8%B1%E4%B9%90%E4%BA%BA%E7%89%A9’, ’http://baike.baidu.com/fenlei/%E5%A8%B1%E4%B9%90%E4%BA%BA%E7%89%A9’,] def parse(self, response):for sel in response.xpath(’//p[@class='grid-list grid-list-spot']/ul/li’): item = TestspiderItem() item[’title’] = sel.xpath(’p[@class='list']/a/text()’)[0].extract() item[’link’] = sel.xpath(’p[@class='list']/a/@href’)[0].extract() yield item
問題解答
回答1:建一個Url管理器,就不會重復抓取了
回答2:知道了,改成這樣就可以了。
def start_requests(self):
yield scrapy.Request(’http://baike.baidu.com/fenlei/%E5%A8%B1%E4%B9%90%E4%BA%BA%E7%89%A9’, self.parse)yield scrapy.Request(’http://baike.baidu.com/fenlei/%E5%A8%B1%E4%B9%90%E4%BA%BA%E7%89%A9’, self.parse)yield scrapy.Request(’http://baike.baidu.com/fenlei/%E5%A8%B1%E4%B9%90%E4%BA%BA%E7%89%A9’, self.parse)
相關文章:
1. docker內創建jenkins訪問另一個容器下的服務器問題2. 在windows下安裝docker Toolbox 啟動Docker Quickstart Terminal 失敗!3. docker不顯示端口映射呢?4. docker-compose中volumes的問題5. golang - 用IDE看docker源碼時的小問題6. 我在centos容器里安裝docker,也就是在容器里安裝容器,報錯了?7. 關docker hub上有些鏡像的tag被標記““This image has vulnerabilities””8. javascript - 連續點擊觸發mouseleave事件9. docker容器呢SSH為什么連不通呢?10. mac里的docker如何命令行開啟呢?

網公網安備