前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python的urllib库

Python的urllib库

作者头像
狼啸风云
修改2022-09-03 21:27:29
1K0
修改2022-09-03 21:27:29
举报
文章被收录于专栏:计算机视觉理论及其实现

urllib是python自带的请求库,各种功能相比较之下也是比较完备的,urllib库包含了一下四个模块:

urllib.request 请求模块

urllib.error 异常处理模块

urllib.parse url解析模块

urllib.robotparse robots.txt解析模块

下面是一些urllib库的使用方法。

使用urllib.request

代码语言:javascript
复制
import urllib.request

response = urllib.request.urlopen('http://www.bnaidu.com')
print(response.read().decode('utf-8')) 

使用read()方法打印网页的HTML,read出来的是字节流,需要decode一下

代码语言:javascript
复制
import urllib.request

response = urllib.request.urlopen('http://www.baidu.com')
print(response.status) #打印状态码信息  其方法和response.getcode() 一样  都是打印当前response的状态码
print(response.getheaders()) #打印出响应的头部信息,内容有服务器类型,时间、文本内容、连接状态等等
print(response.getheader('Server'))  #这种拿到响应头的方式需要加上参数,指定你想要获取的头部中那一条数据
print(response.geturl())  #获取响应的url  
print(response.read())#使用read()方法得到响应体内容,这时是一个字节流bytes,看到明文还需要decode为charset格式

为一个请求添加请求头,伪装为浏览器

1.在请求时就加上请求头参数

代码语言:javascript
复制
import urllib.request
import urllib.parse

url = 'http://httpbin.org/post'
header = {}
header['User-Agent'] = 'Mozilla/5.0 ' \
                          '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
                          '(KHTML, like Gecko) Version/5.1 Safari/534.50'

req = urllib.request.Request(url=url, headers=header)
res = urllib.request.urlopen(req)

Request是一个请求类,在构造时将headers以参数形式加入到请求中

2.使用动态追加headers的方法

若要使用动态追加的方法,必须实例化Request这个类

代码语言:javascript
复制
import urllib.request
import urllib.parse

url = 'http://httpbin.org/post'

req = urllib.request.Request(url=url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0')
res = urllib.request.urlopen(req)

使用代理:

ProxyHandler是urllib.request下的一个类,借助这个类可以构造代理请求

参数为一个dict形式的,key对应着类型,IP,端口

代码语言:javascript
复制
import urllib.request

proxy_handler = urllib.request.ProxyHandler({
    'http':'112.35.29.53:8088',
    'https':'165.227.169.12:80'
})
opener = urllib.request.build_opener(proxy_handler)
response = opener.open('http://www.baidu.com')
print(response.read())

urllib.parse的用法

代码语言:javascript
复制
import urllib.request
import urllib.parse

url = 'http://httpbin.org/post'
header = {}
header['User-Agent'] = 'Mozilla/5.0 ' \
                          '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
                          '(KHTML, like Gecko) Version/5.1 Safari/534.50'
        
data = {}
data['name'] = 'us'
data = urllib.parse.urlencode(data).encode('utf-8')
req = urllib.request.Request(url=url, data=data, headers=header, method='POST')
response = urllib.request.urlopen(req)
print(response.read().decode('utf-8'))
print(type(data))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年09月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档