如何使用Scrapy循环抓取相同的URL

3 投票
3 回答
6192 浏览
提问于 2025-04-16 20:07

所需的内容在同一个页面上,网址是固定的。

我创建了一个爬虫,它可以抓取这个页面上的信息,并把这些信息存储到CSV文件里。但是它只会执行一次,然后就结束了爬取过程。我需要让它不断重复这个操作。该怎么做呢?

使用的是Scrapy 0.12

Python 2.5

3 个回答

0

我这样写代码:

def start_requests(self):
    while True:
        yield scrapy.Request(url, callback=self.parse, dont_filter=True)

我试过下面的方法,但有个问题就是当网络不稳定时,它会停止运行,从而导致循环中断。

from scrapy.http import Request

    class YourSpider(BaseSpider):
    # ...spider init details...
        def parse(self, response):
            # ...process item...
            yield item           
            yield Request(response.url, callback=self.parse)
4

你缺少了 dont_filter=True 这个设置。下面是一个例子。

import scrapy

class MySpider(BaseSpider):
    start_urls = ('http://www.test.com',)    

    def parse(self, response):
        ### Do you processing here
        yield scrapy.Request(response.url, callback=self.parse, dont_filter=True)
7

给你一个具体的例子有点困难,因为我不知道你在用什么爬虫工具以及它的内部工作原理,不过像这样的代码可能会有效。

from scrapy.http import Request

class YourSpider(BaseSpider):
    # ...spider init details...
    def parse(self, response):
        # ...process item...
        yield item           
        yield Request(response.url, callback=self.parse)

撰写回答