Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么是Python';s请求转换部分源代码?_Python_Html - Fatal编程技术网

为什么是Python';s请求转换部分源代码?

为什么是Python';s请求转换部分源代码?,python,html,Python,Html,我试图使用python的请求从谷歌新闻搜索结果中获取不同文章的链接。我使用Beautiful Soup获得链接 我遇到的问题是,尽管在浏览器的源代码视图中,所有链接看起来都很正常,但在操作之后,它们都被更改了——所有链接都以“/url?q=”开头,并且在链接的“核心”完成之后,出现了以“&”开头的字符串。此外-链接中的某些字符也发生了更改-例如url: 更改: 我使用的是标准的“入门”代码: 我知道可以通过使用selenium来解决这个问题,但我想知道请求这个问题的根本原因在哪里(或者更合理

我试图使用python的
请求
从谷歌新闻搜索结果中获取不同文章的链接。我使用
Beautiful Soup
获得链接

我遇到的问题是,尽管在浏览器的源代码视图中,所有链接看起来都很正常,但在操作之后,它们都被更改了——所有链接都以“/url?q=”开头,并且在链接的“核心”完成之后,出现了以“&”开头的字符串。此外-链接中的某些字符也发生了更改-例如url:

更改:

我使用的是标准的“入门”代码:

我知道可以通过使用
selenium
来解决这个问题,但我想知道
请求
这个问题的根本原因在哪里(或者更合理的说法不是
请求
,而是我使用它的方式)


谢谢你的帮助

您将在浏览器中看到的内容与生成的请求进行比较(即,没有用户代理标头)。如果在发出初始请求之前指定此选项,它将反映您在web浏览器中看到的内容。谷歌以不同的方式处理这些请求,它看起来像:

url = 'https://www.google.com/search?hl=en&gl=us&tbm=nws&authuser=0&q=graphene&oq=graphene&gs_l=news-cc.3..43j0l9j43i53.2022.4184.0.4322.14.10.3.1.1.1.166.884.5j5.10.0...0.0...1ac.1.-Q2j3YFqIPQ'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'} # I just used a general Chrome 41 user agent header
res = requests.get(url, headers=headers)

给出一个我们可以看到问题的例子。源代码最初看起来是这样的,并且实际上通过Javascript动态地更改为您在浏览器的元素检查器中看到的内容。使用View Source(否,不是“inspect element”,而是View Source)来证实。@deceze-当我使用View Source时,我仍然看到相同的链接(未更改)[link](View Source:)-当我查找azonano链接时,它们仍然有“?”,“=”字符。Google可能基于用户代理提供不同的HTML,我不知道。事实是,
请求
肯定不会改变任何东西,它会给你它从服务器接收到的HTML。
url = 'https://www.google.com/search?hl=en&gl=us&tbm=nws&authuser=0&q=graphene&oq=graphene&gs_l=news-cc.3..43j0l9j43i53.2022.4184.0.4322.14.10.3.1.1.1.166.884.5j5.10.0...0.0...1ac.1.-Q2j3YFqIPQ'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'} # I just used a general Chrome 41 user agent header
res = requests.get(url, headers=headers)