Получите Google Search Term и ResultStats с помощью Scrapy - PullRequest
0 голосов
/ 10 февраля 2019

Я построил очень простой скребок, используя Scrapy.Для выходной таблицы я хотел бы показать поисковый запрос в Новостях Google, а также значение результатов поиска Google.

Информация, которую я хотел бы получить, отображается в источнике страницы Google как

<input class="gsfi" value="Elon Musk">

и

<div id="resultStats">About 52,300 results</div>

Я уже пытался включить как через ('input.value::text'), так и ('id.resultstats::text'), что, однако, не сработало.У кого-нибудь есть идеи, как решить эту ситуацию?

import scrapy

class QuotesSpider(scrapy.Spider):
    name = 'quotes'
    allowed_domains = ['google.com']
    start_urls = ['https://www.google.com/search?q=elon+musk&source=lnt&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2015%2Ccd_max%3A12%2F31%2F2015&tbm=nws']

def parse(self, response):
    for quote in response.css('div.quote'):
        item = {
            'search_title': quote.css('input.value::text').extract(),
            'results': quote.css('id.resultstats::text').extract(),
            }
        yield item

1 Ответ

0 голосов
/ 10 февраля 2019

Страницы отображаются по-разному при доступе к нему с помощью Scrapy.

Поле поиска становится:

response.css('input#sbhost::attr(value)').get()

Количество результатов:

response.css('#resultStats::text').get()

Кроме того, на этой странице нет класса quote.

Вы можете проверить это в оболочке scrapy:

scrapy shell -s ROBOTSTXT_OBEY=False "https://www.google.com/search?q=elon+musk&source=lnt&tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2015%2Ccd_max%3A12%2F31%2F2015&tbm=nws"

И затем выполните эти 2 команды.

[РЕДАКТИРОВАТЬ] Если ваша цель - получить один элемент для каждого URL, то вы можете сделать это:

def parse(self, response):
    item = {
        'search_title': response.css('input#sbhost::attr(value)').get(),
        'results': response.css('#resultStats::text').get(),
    }
    yield item

Если ваша цель - извлечь каждый результат на странице, то вам нужно что-то другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...