python - 如何设置 header (用户代理)、检索网页、捕获重定向和接受 cookie?

标签 python python-3.x urllib

import urllib.request
url="http://espn.com"
f = urllib.request.urlopen(url)
contents = f.read().decode('latin-1')
q = f.geturl()
print(q)

此代码将返回 http://espn.go.com/,这是我想要的 - 重定向网站 URL。在查看了 Python 文档、谷歌搜索等之后,我也不知道如何:

  1. 捕获重定向的网站 URL(已运行)
  2. 更改传出请求的用户代理
  3. 接受网页可能要发回的任何 cookie

如何在 Python 3 中执行此操作?如果有比 urllib 更好的模块,我可以接受。

最佳答案

一个更好的模块,叫做requests :

import requests

session = requests.Session()
session.headers['User-Agent'] = 'My-requests-agent/0.1'

resp = session.get(url)
contents = resp.text  # If the server said it's latin 1, this'll be unicode (ready decoded)
print(resp.url)       # final URL, after redirects.

requests 遵循重定向(检查 resp.history 以查看其遵循的重定向)。通过使用 session (可选),存储 cookie 并将其传递给后续请求。您可以为每个请求每个 session 设置 header (因此为该 session 发送的每个请求都会发送相同的额外 header )。

关于python - 如何设置 header (用户代理)、检索网页、捕获重定向和接受 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164985/

相关文章:

python - 编译 Python 2.7 所需的 Ubuntu 包

Python3套接字客户端发送和接收十六进制字符串

python - 如何在 Oracle Linux 中安装 python3-dev?

python - Bing Congitive Web 搜索 API 与 Python 3

python - 对文本文件的批量操作仅对一半文件执行

python - wx.StaticBitmap - 简单透明度(mask、png、bmp?)

python - 如何使用 ansi 转义码为 python 中的特定字符单元着色,其中字符单元位置由变量确定

python - 多线程和多处理线程池之间的区别?

python错误: urlopen error [Errno 11001] getaddrinfo failed

python - 如何将代理 PAC 文件用于 python urllib 或请求?