FancyURLopener的version属性在requests库中的等价实现方式
等价实现方式:自定义User-Agent请求头
嗨,当然有对应的实现方式啦!你在FancyURLopener里修改version属性,本质上是自定义HTTP请求的User-Agent请求头——这在requests里实现起来反而更直观,主要有两种常用方式:
方式一:单次请求直接指定headers
如果你只是单次请求需要自定义标识,直接在requests.get()里传入headers参数即可:
import requests url = 'https://www.google.com' # 这里的User-Agent值对应你之前设置的version属性 custom_headers = { 'User-Agent': 'Some fancy thing' } # 发起请求 response = requests.get(url, headers=custom_headers) # 把响应内容保存到文件,对应原代码里的retrieve操作 with open('google.html', 'wb') as file: file.write(response.content)
方式二:通过Session统一设置(适合多请求场景)
如果需要发起多个请求都使用同一个自定义标识,可以创建Session对象,一次性设置好headers,后续所有通过该Session发起的请求都会自动带上这个标识:
import requests # 创建Session实例 session = requests.Session() # 统一更新User-Agent session.headers.update({'User-Agent': 'Some fancy thing'}) url = 'https://www.google.com' # 用Session发起请求 response = session.get(url) # 保存文件 with open('google.html', 'wb') as file: file.write(response.content)
简单来说,FancyURLopener的version属性最终就是作为User-Agent头传递给服务器的,所以在requests里只要自定义这个请求头,就完全等价于你之前的操作啦。
内容的提问来源于stack exchange,提问作者alvas
相关产品推荐
相关产品推荐

