我正在尝试利用scrapy收集谷歌搜索结果并将它们放入MongoDB。但是,我没有得到任何回复......我错过了什么?
看起来很简单。
# -*- coding: utf-8 -*-
import scrapy
class GoogleSpider(scrapy.Spider):
name = "google"
allowed_domains = ["google.com"]
start_urls = (
'https://www.google.com/#q=site:www.linkedin.com%2Fpub+intext:(security+or+jsp)+and+(power+or+utility)',
)
def parse(self, response):
for sel in response.xpath('//*[@id="rso"]/div/div[1]/div/h3'):
title = sel.xpath('a/text()').extract()
link = sel.xpath('a/@href').extract()
desc = sel.xpath('text()').extract()
print title, link, desc
pass
答案 0 :(得分:1)
您错过了响应没有您使用XPath请求的元素。
这是因为您在使用Scrapy和使用浏览器时看到了其他网站。这是因为当您致电start_url
时,它会加载Google,然后会发送XHR请求来查询搜索。
Scrapy不会发送此XHR调用,因为这些内容是由JavaScript启动的,而不是由Scrapy执行。
要查看scrapy在调用此URL时获得的内容,并查看是否找到了您的期望,请使用Scrapy Shell:
scrapy shell "https://www.google.com/#q=site:www.linkedin.com%2Fpub+intext:(security+or+jsp)+and+(power+or+utility)"
然后,当出现命令提示符时,您可以看到无法获得结果的原因:
>>> response.xpath('//*[@id="rso"]/div/div[1]/div/h3')
[]
>>>
因此,Scrapy因为缺少内容而找不到任何内容。