Python 在谷歌搜索中选择第一个链接

Python 在谷歌搜索中选择第一个链接,python,html,web-scraping,scrapy,Python,Html,Web Scraping,Scrapy,当我查看网站(谷歌搜索)时,我可以通过finder搜索这个//div[@class=“r”]/a/@href来选择我想要的href。但是当使用scrapy并通过response.xpath('//div[@class=“r”]/a/@href')访问时,这将返回空。许多其他Xpath(如链接标题)也将导致空。奇怪的是,当使用response.xpath('//cite').get()时,我能够得到一些东西,这基本上是href,但不完整 如果我做了response.body我可以看到我想要的hre

当我查看网站(谷歌搜索)时,我可以通过finder搜索这个
//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的传统方法来选择它,这在任何其他网站都是徒劳的

试试下面的方法

response.xpath("//div[@class='r']").xpath("//a/@href").extract()
试试下面的方法

response.xpath("//div[@class='r']").xpath("//a/@href").extract()

您使用的xpath在浏览器上工作,但在响应中不工作,这是因为如果禁用JS,Google会以不同的方式显示页面,这是scrapy的情况,而不是您的浏览器,因此您需要使用一个既适用于两种情况,也适用于第一种情况的xpath

此选项不适用于JS,但不适用于浏览器(如果启用了JS):


这将返回第一个结果的第一个URL。

您使用的xpath在浏览器上工作,但在响应中没有,原因是如果禁用JS,Google会以不同的方式显示页面,这是scrapy的情况,而不是您的浏览器,因此您需要使用既适用于两种情况,也适用于第一种情况的xpath

此选项不适用于JS,但不适用于浏览器(如果启用了JS):


这将返回第一个结果的第一个URL。

欢迎使用SO。你是否已经尝试过“代码>响应?XPath(‘//div [@类=r)] /a/@ HReF)?提取()/代码>当然。Extudio()将清理它,但你仍然应该首先得到某种响应。谢谢。我正在尝试在我的新机器上安装Sury,获得<代码>错误:需要微软Visual C++ 14。微软Visual C++构建工具“:https://visualstudio.microsoft.com/downloads/。必须先解决此问题,然后再联系您。欢迎使用SO。您是否尝试过
response.xpath('//div[@class=“r”]/a/@href”).extract()
?当然可以。extract()只是将其清理干净,但您仍然应该首先得到某种响应。谢谢。我正在尝试在我的新机器上安装Surviy,得到<代码>错误:微软Visual C++ 14是必需的。用“微软Visual C++构建工具”获得:https://visualstudio.microsoft.com/downloads/。必须先解决此问题,然后再返回给您。空的。=/我认为谷歌正在做一些事情来阻止我得到它,因为我在任何其他网站上都没有这个问题,然而,当我回复(body)时,我确实得到了所有的网站代码,所以我不知道发生了什么。我被这个小东西卡住了5个小时。fml.empty.=/我认为谷歌正在做一些事情来阻止我得到它,因为我在任何其他网站上都没有这个问题,然而,当我回复(body)时,我确实得到了所有的网站代码,所以我不知道发生了什么。我被这件小事困扰了5个小时。fml。当你回答的时候,我正在写我自己的答案。非常感谢。当我期待着scrapy的身体反应时,我意识到课程与我浏览网站时不一样。但我不知道这是因为启用了JS。我不能高估你,因为你的声誉不够。当你回答的时候,我正在写我自己的答案。非常感谢。当我期待着scrapy的身体反应时,我意识到课程与我浏览网站时不一样。但我不知道这是因为启用了JS。我不能高估你,因为你没有足够的声誉。