当我检查网站(谷歌搜索)时,可以通过查找器搜索此//div[@class="r"]/a/@href
来选择所需的href。但是,当使用scrapy并通过response.xpath('//div[@class="r"]/a/@href'
访问时,它将返回空。许多其他Xpath(例如链接标题)也将为空。奇怪的是,使用response.xpath('//cite').get()
时我可以得到一些东西,这基本上是href,但不完整。
如果我这样做了,response.body
可以在代码中看到所需的href,但是我不知道如何访问它。尝试通过可以在任何其他网站上使用的传统方法css或xpath选择它是徒劳的。
答案 0 :(得分:2)
您使用的xpath在浏览器上正常运行但没有响应的原因是,如果禁用了JS,Google会以不同的方式显示页面,这种情况很容易出现,但您的浏览器却没有,因此您需要使用适用于两种情况或仅适用于第一种情况的XPath。
此代码不适用于JS,但无法在浏览器中使用(如果启用了JS):
//div[@id='ires']//h3/a[1]/@href
这将返回第一个结果的第一个URL。
答案 1 :(得分:0)
尝试以下方法。
response.xpath("//div[@class='r']").xpath("//a/@href").extract()