在同一URL上多次运行Scrapy

时间:2018-04-14 21:55:20

标签: python web-scraping scrapy web-crawler

我想抓取某个网址,每次调用时都会返回一个随机响应。下面的代码返回我想要的内容,但我想长时间运行它,以便我可以将数据用于NLP应用程序。此代码仅运行scrapy crawl the一次,但我希望它由于最后一个if语句而运行更多。

Unix的启动命令是我正在寻找的吗?我尝试过但感觉有点慢。如果我不得不使用start命令将在终端中打开许多选项卡并运行带有启动前缀的相同命令是一个好习惯还是只是限制了速度?

class TheSpider(scrapy.Spider):
name = 'the'
allowed_domains = ['https://websiteiwannacrawl.com']
start_urls = ['https://websiteiwannacrawl.com']

def parse(self, response):
    info = {}
    info['text'] = response.css('.pd-text').extract()
    yield info

    next_page = 'https://websiteiwannacrawl.com'
    if next_page is not None:
        yield scrapy.Request(next_page, callback=self.parse)

1 个答案:

答案 0 :(得分:2)

  

dont_filter

     

表示调度程序不应过滤此请求。   当您想要执行相同的多个请求时使用此选项   次,忽略重复过滤器。小心使用,否则你会   进入爬行循环。默认为False

您应该在请求中添加此内容

yield scrapy.Request(next_page, dont_filter=True)

这不是关于你的问题,而是callback=self.parse请阅读 Parse Method