@BMinhoj

Как использовать несколько методов в scrapy?

...Есть такой вот код:

class GameScrapy(scrapy.Spider):
    name = 'game'
    allowed_domains = ['store.steampowered.com']
    start_urls = ['https://store.steampowered.com/search/?term=indi&ndl=1']

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url=get_url(url), callback=self.parse)

    def parse(self, response):
        for link in response.css('div.search_results a::attr(href)'):
            game_url = link.get()
            yield scrapy.Request(url=get_url(game_url), callback=self.parse_game)

    def parse_game(self, response):
        yield {
            'name': 1
        }


Я проверил response.css('div.search_results a::attr(href)') на то что он непустой и в нем 50 ссылок
Я запускаю scrapy crawl game -o game.csv, но в файле пусто, а должно быть 50 единиц в файле game.csv

НО, если написать так(удалил фунцкию parse_game, и пишу в файл только ссылки), то так все работает.

class GameScrapy(scrapy.Spider):
    name = 'game'
    allowed_domains = ['store.steampowered.com']
    start_urls = ['https://store.steampowered.com/search/?term=indi&ndl=1']

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url=get_url(url), callback=self.parse)

    def parse(self, response):
        for link in response.css('div.search_results a::attr(href)'):
            game_url = link.get()
            yield {
                'link': game_url
            }
  • Вопрос задан
  • 82 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы