停止抓取相同的网址

2024-05-08 17:09:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一个基本的爬行蜘蛛来抓取一个看起来运行良好的网站,除了它不想停止的事实之外,也就是说,它不断地访问相同的网址并返回相同的内容-我总是不得不停止它。我怀疑它会一遍又一遍地浏览同一个网址。有什么规则可以阻止这一切吗?或者我还有别的事要做吗?也许是中间件?在

卡盘如下:

class LsbuSpider(CrawlSpider):
name = "lsbu6"
allowed_domains = ["lsbu.ac.uk"]
start_urls = [
    "http://www.lsbu.ac.uk"
]
rules = [
    Rule(SgmlLinkExtractor(allow=['lsbu.ac.uk/business-and-partners/.+']), callback='parse_item', follow=True),
]

def parse_item(self, response):
    join = Join()
    sel = Selector(response)
    bits = sel.xpath('//*')
    scraped_bits = []            
    for bit in bits:
        scraped_bit = LsbuItem()
        scraped_bit['title'] = scraped_bit.xpath('//title/text()').extract()
        scraped_bit['desc'] = join(bit.xpath('//*[@id="main_content_main_column"]//text()').extract()).strip()
        scraped_bits.append(scraped_bit)

    return scraped_bits

我的settings.py文件如下所示

^{pr2}$

如有任何关于停止其连续运行的帮助/指导/指示,我们将不胜感激。。。在

因为我是一个新手,任何关于整理代码的评论也会很有帮助(或者链接到好的指导)。在

谢谢。。。在


Tags: texttitleparseresponsebititemxpathac
2条回答

DupeFilter默认启用:http://doc.scrapy.org/en/latest/topics/settings.html#dupefilter-class,它基于请求url。在

我在一个新的香草屑项目上尝试了一个简化版的spider,没有任何自定义配置。dupefilter正常工作,在几次请求之后爬网停止。我得说你的设置或者你的破版本有问题。我建议您升级到scrapy 1.0,只是为了确定:)

$ pip install scrapy  pre

我测试的简化蜘蛛:

^{pr2}$

你的设计让爬行成圈。例如,有一个页面http://www.lsbu.ac.uk/business-and-partners/business,打开时包含指向“http://www.lsbu.ac.uk/business-and-partners/partners”的链接,而该页面又包含指向第一个页面的链接。因此,你无限期地绕圈子。在

为了克服这个问题,您需要创建更好的规则,消除循环引用。 而且,您定义了两个相同的规则,这是不需要的。如果你想要follow你可以把它放在同一个规则上,你不需要一个新的规则。在

相关问题 更多 >