问题:Scrapy不断访问单个URL,并不断递归对其进行爬取。我已经检查了response.url,以确保这是一个页面,它一直在抓取,并且没有涉及可能为不同的URL呈现同一页面的查询字符串。
我为解决它所做的事情:
在Scrapy / spider.py下,我注意到dont_filter设置为True,并将其更改为False。但这没有帮助
我也在代码中设置了unique = True,但这也没有帮助。
附加信息
指定为start_url的页面只有1个链接到页面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
最佳答案
默认情况下,Scrapy将附加到输出文件(如果存在)中。您在output.csv
中看到的是多次蜘蛛运行的结果。再次运行蜘蛛网之前,请先取下output.csv
。
关于python - 尽管dont_filter = False,Scrapy正在访问同一个网址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27717374/