尽管dont_filter = False,但Scrapy正在访问相同的Url

时间:2014-12-31 06:52:29

标签: python scrapy

问题: Scrapy不断访问单个网址并继续以递归方式抓取它。我检查了response.url以确保这是一个单独的页面,它一直在抓取,并且没有涉及可能为不同的URL呈现相同页面的查询字符串。

我做了什么来解决它:

  1. 在Scrapy / spider.py下我注意到dont_filter设置为True并将其更改为False。但它没有帮助
  2. 我在代码中也设置了唯一= True,但这也没有帮助。
  3. 其他信息

    作为start_url给出的页面只有一个指向页面a.html的链接。 Scrapy一次又一次地抓住a.html。

    代码

    from scrapy.contrib.spiders import CrawlSpider, Rule
    from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
    from scrapy.selector import Selector
    from kt.items import DmozItem
    
    class DmozSpider(CrawlSpider):
        name = "dmoz"
        allowed_domains = ["datacaredubai.com"]
        start_urls = ["http://www.datacaredubai.com/aj/link.html"]
        rules = (
        Rule(SgmlLinkExtractor(allow=('/aj'),unique=('Yes')), callback='parse_item'), 
        )
    
    
    def parse_item(self, response):
        sel = Selector(response)
        sites = sel.xpath('//*') 
        items = []
        for site in sites:
            item = DmozItem()
            item['title']= site.xpath('/html/head/meta[3]').extract()         
            item['req_url']= response.url            
            items.append(item)
        return items
    

1 个答案:

答案 0 :(得分:1)

默认情况下,Scrapy会追加到输出文件中(如果存在)。您在output.csv中看到的是多个蜘蛛运行的结果。在再次运行蜘蛛之前删除output.csv