我想获取指定时间段(如过去六个月(内关键字列表发布的新闻文章总数。
我尝试使用抓取库来抓取谷歌新闻,但使用以下代码无法获得指定时间段的结果:
import scrapy
class QuotesSpider(scrapy.Spider):
name = 'quotes'
allowed_domains = ['google.com']
start_urls = ['https://www.google.com/search?tbs=cdr%3A1%2Ccd_min%3A1%2F1%2F2019%2Ccd_max%3A8%2F1%2F2019&tbm=nws&ei=1tJXXfHLM4-S9QO07onwCg&q=%22Apple+Inc%22&oq=%22Apple+Inc%22&gs_l=psy-ab.3..0l3.48094.50359.0.51273.9.9.0.0.0.0.318.893.0j2j1j1.4.0....0...1c.1.64.psy-ab..6.3.752....0.2cwnwIbhfS4']
def parse(self, response):
item = {
'search_title': response.css('input#sbhost::attr(value)').get(),
'results': response.css('#resultStats::text').get(),
}
yield item
我想创建一个数据框作为最终输出,其中包含在谷歌新闻上找到的实体和结果数量。
选择器似乎有效,但 robotstxt 禁止访问该页面。 您可以通过在 settings.py 中设置以下内容来解决此问题:ROBOTSTXT_OBEY=False
.
或者,你可以把它放在你的类中:
class QuotesSpider(scrapy.Spider):
custom_settings = {'ROBOTSTXT_OBEY': False}
请注意,这可能会导致Google禁止您的IP地址,这可以适用于几个页面,但之后会要求验证码挑战