Как получить заголовки заголовков с веб-страницы Новостей Google с помощью Scrapy? - PullRequest
0 голосов
/ 18 апреля 2019

Я сохранил автономный файл https://news.google.com/search?q=amazon&hl=en-US&gl=US&ceid=US%3Aen

Возникли проблемы с определением, как получить названия из перечисленных статей.

import scrapy

class newsSpider(scrapy.Spider):
    name = "news"
    start_urls = ['file:///127.0.0.1/home/toni/Desktop/crawldeez/googlenewsoffline.html/'
                  ]

    def parse(self, response):
        for xrnccd in response.css('a.MQsxIb.xTewfe.R7GTQ.keNKEd.j7vNaf.Cc0Z5d.EjqUne'):
            yield {
                'ipQwMb.ekueJc.RD0gLb': xrnccd.css('h3.ipQwMb.ekueJc.RD0gLb::ipQwMb.ekueJc.RD0gLb').get(),
            }

1 Ответ

1 голос
/ 18 апреля 2019

Проблема заключается в том, что содержимое страницы отображается динамически с использованием JavaScript и, следовательно, не может быть извлечено из HTML с использованием методов css или xpath.Однако он присутствует в теле ответа, поэтому вы можете извлечь его с помощью регулярных выражений.Вот сеанс Scrapy shell , чтобы показать, как:

$ scrapy shell "https://news.google.com/search?q=amazon&hl=en-US&gl=US&ceid=US%3Aen"
...
>>> import re
>>> from pprint import pprint
>>>
>>> titles = re.findall(r'<h3 class="[^"]+?"><a[^>]+?>(.+?)</a>', response.text)
>>> pprint(titles)
['Amazon will no longer sell Chinese goods in China',
 'YouTube is finally coming back to Amazon’s Fire TV devices',
 'Amazon Plans to Use Digital Media to Expand Its Advertising Business',
 'Amazon flooded with fake reviews; Learn how to spot them',
 'How To Win in Today&#39;s Amazon World',
 'Amazon Day: How to schedule Amazon deliveries',
 'Bezos Disputes Amazon’s Market Power. But His Merchants Feel the Pinch',
 '20 Best Action Movies to Stream on Amazon Prime',
 ...]
...