urllib.request 库

官方文档地址:https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen

 

urlopen

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

 

参数

  • url:可以是 url 字符串,也可以是 Request 对象。
  • data:默认是 None,则为 GET 请求;不为空时,默认是 POST 请求。
  • timeout:设置访问超时时间(以秒为单位),不设置则使用全局默认时间。
  • cafile, capath, cadefault:自 3.6 版本弃用。实现可信任的 CA 证书的 HTTPS 连接,使用 context 代替。
  • context:了解。实现 ssl 加密传输,必须是 ssl.SSLContext 实例。

 

返回对象有以下属性

  • url:返回 url。
  • headers:返回 EmailMessage 实例的响应头。
  • status:3.9 版本里新添加的,返回状态码。
  • geturl():自 3.9 版本弃用。使用 url 代替。
  • info():自 3.9 版本弃用。使用 headers 代替。
  • code:自 3.9 版本弃用。使用 status 代替。
  • getstatus():自 3.9版本弃用。使用 status 代替。

 

对于 HTTP 和 HTTPS URLs 来说,返回的是稍加修改的 http.client.HTTPResponse 对象。

对于 FTP、文件和数据 URLs 来说,返回的是 urllib.response.addinfourl 对象。

 

基础示例

import urllib.request url = r'http://www.baidu.com' # 字符串前添加 r,防止 url 中包含转义字符 response = urllib.request.urlopen(url) # url 中不添加协议,报错,ValueError: unknown url type: 'www.baidu.com' content = response.read() content_decode = content.decode() # 默认编码 utf-8 print(type(response)) # <class 'http.client.HTTPResponse'> print(type(content)) # <class 'bytes'> print(type(content_decode)) # <class 'str'> print(response.url) print(response.headers) print(response.status)

 

自定义请求

Request

文档:https://docs.python.org/3/library/urllib.request.html#urllib.request.Request

class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)

from urllib import request url = r'http://www.baidu.com' req = request.Request(url) response = request.urlopen(url).read().decode()

 

添加 UserAgent,伪装浏览器

from urllib import request url = r'http://www.baidu.com' header = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36" } req = request.Request(url, headers=header) response = request.urlopen(url).read().decode()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值