如何使用Scrapy循环抓取相同的URL
所需的内容在同一个页面上,网址是固定的。
我创建了一个爬虫,它可以抓取这个页面上的信息,并把这些信息存储到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)