我是scrapy的新手,试图从下面的给定链接中提取谷歌新闻:
https://www.google.co.in/search?q=cholera+news&safe=strict&source=lnms&tbm=nws&sa=X&ved=0ahUKEwik0KLV-JfYAhWLpY8KHVpaAL0Q_AUICigB&biw=1863&bih=966
"霍乱"提供关键词,显示与霍乱关键世界相关的各种新闻的小块进一步我用scrapy尝试提取内容个人新闻的每个块。
fetch("https://www.google.co.in/search?q=cholera+news&safe=strict&source=lnms&tbm=nws&sa=X&ved=0ahUKEwik0KLV-JfYAhWLpY8KHVpaAL0Q_AUICigB&biw=1863&bih=966")
response.css(".ts._JGs._KHs._oGs._KGs._jHs::text").extract()
其中.ts._JGs._KHs._oGs._KGs._jHs::text
表示每个新闻块的div class="ts _JGs _KHs _oGs _KGs _jHs
。
但它返回None。
答案 0 :(得分:0)
在scrapy shell
中使用view(response)
,您会在网络浏览器中看到fetch()
。
Google使用JavaScript来显示数据,但它也可以发送不使用JavaScript的页面。但没有JavaScript的页面通常有不同的标签和类。
您还可以在浏览中关闭JavaScript,然后打开Google查看标记。
试试这个:
response.css('#search td ::text').extract()
答案 1 :(得分:0)
经过艰苦的努力,我找到了一种方法,可以通过非常简单的技巧废弃所需的数据,
fetch("https://www.google.co.in/search?q=cholera+news&safe=strict&source=lnms&tbm=nws&sa=X&ved=0ahUKEwik0KLV-JfYAhWLpY8KHVpaAL0Q_AUICigB&biw=1863&bih=966")
和css选择器“class =”g“标签可以用来像这样提取所需的块
response.css(".g").extract()
返回所有单个新闻块的列表,可以在列表索引的基础上进一步使用,如下所示:
response.css(".g").extract()[0]
或
response.css(".g").extract()[1]