当我检查网站(谷歌搜索)时,我可以通过查找器搜索此//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可以在任何其他网站上工作,这是徒劳的。
您使用的xpath在浏览器上工作但在响应中没有的原因是因为如果JS被禁用,Google会以不同的方式显示页面,scrapy而不是浏览器就是这种情况,因此您需要使用XPath这将适用于两者或仅适用于第一种情况。
这个适用于没有JS,但不能在浏览器中工作(如果启用了JS):
//div[@id='ires']//h3/a[1]/@href
这将返回第一个结果的第一个URL。
试试下面的内容。
response.xpath("//div[@class='r']").xpath("//a/@href").extract()