Scrapy init возвращает None - PullRequest
0 голосов
/ 03 марта 2020

У меня есть сценарий Scrapling Scrawling.

class QuotesSpider(scrapy.Spider):
name = 'quotes'

def __init__(self, *args, **kwargs):
    super(QuotesSpider, self).__init__(*args, **kwargs)
    self.cat = [kwargs.get('cat')] 
    print(self.cat)

def start_requests(self):
    #print(self.params)
    urls = ['https://google.com/html/?q=a%v%c']
    for url in urls:
        yield scrapy.Request(url=url, callback=self.parse)

В командной строке:

scrapy crawl quotes -a cat="avc"

Когда я запускаю команду:

Она печатает «Нет»

Как получить доступ к значению "av c", передаваемому через командную строку в программе

1 Ответ

0 голосов
/ 03 марта 2020

В вашем коде чего-то не хватает. Проверьте приведенный ниже пример кода

class QuotesSpider(scrapy.Spider):
    name = 'quotes'

    def __init__(self, *args, **kwargs):
        super(QuotesSpider, self).__init__(*args, **kwargs)
        self.cat = kwargs.get('cat')
        print(self.cat)

    def start_requests(self):
        # print(self.params)
        urls = [f"https://www.google.com/search?q={self.cat}"]
        # urls = ['https://google.com/html/?q=a%v%c']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        print(response, "Response <---")

Запрошенный URL-адрес Google был неверным, я изменил его на новый.

<200 https://www.google.com/search?q=avc> Response <---
...