проект python-scrapy для возврата списка URL-адресов и очистки содержимого внутри URL-адресов - PullRequest
0 голосов
/ 28 декабря 2018

В настоящее время пытаюсь разобраться с этим (страница: 'https://sportschatplace.com/nba-picks') для проекта с пауками-скрапами для каждого URL-адреса игры, а затем перейти на страницу каждой игры и получить дополнительную информацию внутри.

Когда я запускаюэто, он просто возвращается без страниц страниц. Любая помощь будет оценена. Вот фрагмент моего кода:

class GameSpider(scrapy.Spider):
    name = 'games'
    allowed_domains = ['sportschatplace.com']
    start_urls = [
        'https://sportschatplace.com/nba-picks'
    ]
    def parse(self, response):
        games = response.css("div.home-a").extract_first()
        for g in games:
            url = urljoin(response.url, g)
            yield scrapy.Request(url, callback = self.parse_game)

    def parse_game(self, response):
        for info in response.css('div.gutter'):
            yield {
                'game_teams': info.css('p.heading-sub').extract_first(), #check if these are correct before running
                'game_datetime': info.css('h2.heading-sub').extract_first(),
                'game_line': info.css('h3.heading-sub').extract_first(),
                # 'game_text': info.css('   ').extract(),
                'game_pick': info.css('h3.block mt1 dark-gray').extract(),
            }

1 Ответ

0 голосов
/ 31 декабря 2018
games = response.css("div.home-a").extract_first()

div.home-a содержит несколько divs, и вы извлекаете первое, а также extract_first() преобразуете div в строку.

То, что я получил по ссылке, заключается в том, что, ваш CSS не дает вам то, что вы хотите.

Попробуйте это

css = '[itemprop="url"]::attr(href)'
games = response.css(css).extract()    #list of game urls
...