python - Scrapy:抓取连续的 url

标签 python web-scraping scrapy

我有一个关于 scrapy 的非常简单的问题。我想抓取一个 start_url 为 www.example.com/1 的网站。然后我想去 www.example.com/2 和 www.example.com/3 等等。我知道这应该很简单,但是,如何才能做到呢?

这是我的抓取工具,再简单不过了:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "scraper"
    start_urls = [
        'http://www.example.com/1',
    ]

    def parse(self, response):
        for quote in response.css('#Ficha'):
            yield {
                'item_1': quote.css('div.ficha_med > div > h1').extract(),
            }

现在,我怎样才能去 http://www.example.com/2

最佳答案

start_requests 方法添加到您的类中,并根据需要生成这些请求:

import scrapy

class QuotesSpider(scrapy.Spider):

    name = "scraper"

    def start_requests(self):
        n = ???                          # set the limit here
        for i in range(1, n):
            yield scrapy.Request('http://www.example.com/{}'.format(i), self.parse)

    def parse(self, response):
        for quote in response.css('#Ficha'):
            yield {
                'item_1': quote.css('div.ficha_med > div > h1').extract(),
            }

另一种选择是,您可以在 start_urls 参数中放置多个 url:

class QuotesSpider(scrapy.Spider):
    name = "scraper"
    start_urls = ['http://www.example.com/{}'.format(i) for i in range(1, 100)]
                                                 # choose your limit here ^^^

    def parse(self, response):
        for quote in response.css('#Ficha'):
            yield {
                'item_1': quote.css('div.ficha_med > div > h1').extract(),
            }

关于python - Scrapy:抓取连续的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45001388/

相关文章:

Python 比较字典中的不同值

python - Django 测试 : Faking User Creation

python - 错误 : "No module named _markerlib" when installing some packages on virtualenv

xpath - 如何在 import.io 中正确设置 xpath 以进行抓取

python - Python 应用程序的最佳项目结构是什么?

go - 怎么去网上找包裹?

python - 处理下一页链接时遇到问题

web-scraping - 你如何在 NodeJs 中抓取动态生成的网页?

python - Scrapy 飞溅^ AttributeError : 'module' object has no attribute 'Spider'

python - 在 Scrapy 中从数字中去除逗号