Как я могу запросить URL-адреса, просто изменив последнюю часть URL-адреса - PullRequest
0 голосов
/ 09 июля 2020

В Spider я просто хочу запросить URL-адреса, у которых есть одно правило.

Список URL-адресов:

  1. www.example.com/bread/coffee/A
  2. www.example.com/bread/coffee/B
  3. www.example.com/bread/coffee/C
  4. www.example.com/bread/coffee/D

поэтому start_request это www.example.com/bread/coffee/A, а затем, что нужно делать в def parse ??

class MySpider(scrapy.Spider):
    name = 'exmple.com'
    start_urls = [www.example.com/bread/coffee/A]
    
    def parse(self, response):
        ???
        yield ???

небольшая подсказка оценит

1 Ответ

1 голос
/ 09 июля 2020

вы можете использовать такой код:

class MySpider(scrapy.Spider):
    name = 'exmple.com'
    start_urls = ['www.example.com/bread/coffee/A']

    def start_requests(self):
        urls = [
            'www.example.com/bread/coffee/A',
            'www.example.com/bread/coffee/B',
            'www.example.com/bread/coffee/C',
            'www.example.com/bread/coffee/D'
        ]

        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        # find what you need
        yield # your item/dict

также убедитесь, что ваш URL-адрес (-а) имеет правильный формат, они должны содержать http или https

, как и вы можно использовать модуль string для генерации ваших URL

import string
def start_requests(self):
        url = 'www.example.com/bread/coffee/{}'
        for l in string.ascii_uppercase:
            url = url.format(l)
            yield scrapy.Request(url=url, callback=self.parse)

...