python urllib模块
程序员文章站
2022-05-21 10:47:34
urllib模块urllib.request模块版本介绍常用方法响应对象urllib.parse模块常用方法请求方式urllib.request模块版本介绍在python3.0之前,通常为urllib2、urllib结合使用python3把urllib和urllib2合并成urllib.request常用方法urllib.request.urlopen(url):向url发送请求并获取响应得到响应之后,response.read() -> 得到网页内容,编码为bytes使用'r...
urllib模块
urllib.request模块
版本介绍
- 在
python3.0
之前,通常为urllib2
、urllib
结合使用 -
python3
把urllib
和urllib2
合并成urllib.request
常用方法
-
urllib.request.urlopen(url)
:向url
发送请求并获取响应- 得到响应之后,
response.read()
-> 得到网页内容,编码为bytes - 使用
response.read().decode('utf-8')
可以得到以字符串为编码的网页内容 -
代码举例
import urllib.request html = urllib.request.urlopen( 'https://818ps.com/muban/biaoqingbao.html?user_source=r416508&sdclkid=b52pALol15jpALAR&bd_vid=8269777356919846594') print(html.read().decode('utf-8'))
- 得到响应之后,
- 针对一些反爬机制,有时我们可能需要添加headers参数,但是
urllib.request.urlopen()
不能增加这个参数,所以需要用到urllib.request.Request()
方法-
步骤
- 1、创建请求对象
- 2、发送请求并获取响应
- 3、打印网页内容
-
代码举例
import urllib.request url = 'https://www.baidu.com' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} # 1、创建请求对象 html = urllib.request.Request(url, headers=headers) # 2、响应对象 response = urllib.request.urlopen(html) # 3、获取网页内容 print(response.read().decode('utf-8'))
-
步骤
响应对象
-
read()
-> 读取服务器响应的内容 -
getcode()
-> 返回HTTP的响应码 -
geturl()
-> 返回实际数据的URL(防止重定向问题)
urllib.parse模块
常用方法
-
urllib.parse.urlencode(参数:字典)
-> 将字符串转换成形如%E6%9F%AF%E5%8D%97
-
代码示例
import urllib.request import urllib.parse # https://www.baidu.com/s?wd=%E6%9F%AF%E5%8D%97 url = 'https://www.baidu.com/s?' name = input("请输入要搜索的内容:") # 定义一个字典,与urllib.parse.urlencode的传参形式一致 wd = {'wd': name} # 将汉字转成形如%E6%9F%AF%E5%8D%97 wd = urllib.parse.urlencode(wd) # 拼接完整url url = url + wd headers = headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} # 创建请求对象 req = urllib.request.Request(url, headers=headers) # 发送请求并获取响应 res = urllib.request.urlopen(req) # 获取网页内容 html = res.read().decode('utf-8') # 打印内容 print(html)
-
代码示例
-
urllib.parse.quote(参数:字符串)
-> 将字符串转换成形如%E6%9F%AF%E5%8D%97
- 代码示例
import urllib.parse # https://www.baidu.com/s?wd=%E6%9F%AF%E5%8D%97 url = 'https://www.baidu.com/s?' name = input('请输入你要搜索的内容:') name = urllib.parse.quote(name) # 拼接完整url url = url + name headers = headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} # 创建请求对象 req = urllib.request.Request(url, headers=headers) # 发送请求并获取响应 res = urllib.request.urlopen(req) # 获取网页内容 html = res.read().decode('utf-8') # 打印内容 print(html)
- 代码示例
请求方式
-
GET 特点 :查询参数在URL地址中显示
-
POST
- 在Request方法中添加data参数
urllib.request.Request(url,data=data,headers=headers)
- data :表单数据以bytes类型提交,不能是str
- 在Request方法中添加data参数
本文地址:https://blog.csdn.net/weixin_44604586/article/details/107269978
上一篇: 浅析AngularJS Filter用法
下一篇: php实现的后台表格分页功能示例