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-compose中volumes的問題2. java如何高效讀寫10G以上大文件3. android - viewpager問題PagerTabStrip樣式4. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題5. css - input元素的time控件無法選擇6. javascript - js判斷用戶的網絡能否上網?7. python 字符串匹配問題8. dockerfile - [docker build image失敗- npm install]9. javascript - 這里的這個函數是干嘛用的?10. mysql - SQL語句可以提供“查詢表,并至第100條結果為止”嗎?
