在python qazxsw poi如果我按照响应的qazxsw poi qazxsw poi,它为我提供了重定向的URL,如下所示:
requests
问:任何人都知道重定向history
在哪里?头?如果标头不包含url
项但进行重定向,它将如何识别重定向URL?你能提供参考吗?
编辑:
我查看了文档。它没有说“怎么样”。一些答案显示它是import requests
response = requests.get('https://yahoo.com')
for resp in response.history:
print(resp.url, resp.text)
。我不确定。我从历史记录响应(逐项)中提取的重定向网址是否只是每个响应中的“位置”标头?或者是否有其他库用于识别重定向URL?可能有些python专家可以帮忙吗?
HTTP重定向通常采用3xx响应代码的形式加上“Location:”标头,指示重定向到的位置。这是在HTTP协议中编写的,因此任何符合要求的客户端实现都将执行规范所述的任何操作。
见urls
用这么多的话说,如果你打电话给location
来访问一个URL(允许重定向 - 可以在headers['Location']
中选择关闭它),服务器说“转到这里”,RFC 7231 Section 6.4.会在内部调用自己的新URL,将前一个添加到历史记录中,多次访问不重定向的页面,或者达到限制(通常设置为30以防止恶作剧,例如页面在无限循环中重定向到自身) 。
许多Web服务器(如CMS)依赖于服务器端URL重写配置,这些配置允许程序员生成(结构上)简单的URL,服务器随后将其解析并重定向到可能对人眼更友好或符合人眼的不同位置。由该服务器的管理员定义的统一约定,并且一些内容传递网络使用重定向将每个访问者发送到在地理上或在网络拓扑方面接近它们的服务器。点击跟踪还经常导致您的浏览器在发送之前通过唯一的URL跳转,以实际获取它试图显示的内容。由于这些技术,当您尝试获取某些内容时,会看到多个重定向并不罕见。
此外,但实际上除了requests
或类似的库支持之外,交互式浏览器通常也支持JavaScript,它允许网页在浏览器中运行代码,这可能导致它在程序控制下访问新页面(即可能在复杂条件下)这可能甚至不完全是确定性的)。如果你需要支持这一点,目前流行的解决方案是运行一个真正的交互式浏览器(可能是“无头”,即没有可观察的用户界面)并让它以某种方式将其状态传达给Python。
也许这会对你有所帮助:requests
和这个:requests
我猜你误解了重定向的工作原理。
重定向是一个客户端操作,这意味着如果不进行重定向,则不会重定向。所以requests
实际上为你做了重定向。它可以跟踪历史并不奇怪。
假设您向http://docs.python-requests.org/en/latest/user/quickstart/#redirection-and-history发送请求并且响应重定向到Python Requests library redirect new url,那么requests
将向a.com
提出另一个请求并将b.com
添加到历史记录中。
如果requests
的响应也重定向到b.com
,那么a.com
将做同样的事情:再向b.com
提出请求并将c.com
添加到历史记录中。
requests
是相关的方法c.com
,它是一个发电机,我相信它不难理解。