urllib和re模块的使用
re模块的使用
. 匹配任意一个字符,除了\n
^ 匹配字符串的开头
$ 匹配字符串的结尾
- 匹配0个或多个的字符串
- 匹配1个或多个的字符串
? 匹配0个或1个,为非贪婪方式
{n} 匹配n个的字符串
[a, b , c] 匹配 ‘a’ 或 ‘b’ 或 ‘c’
[^…] 不在[ ]内的字符, 如[^abc] 表示匹配除了’a’ ,‘b’, ‘c’ 这个三个字符以外的字符
[…-…] 表示范围,如[1-9] 表示匹配数字1到9
\ 反斜杠后面跟 元字符 去除 元字符的特殊功能,反斜杠后面跟 普通字符 实现 特殊功能
\d 匹配 任何 数字,相当于[0-9]
\D 匹配 任何 非数字,相当于[^0-9]
\s 匹配 任何 空白字符, 相当于[\t\n\r\f]
\S 匹配 任何 非空白字符, 相当于[^\t\n\r\f]
\w 匹配 任何 字母和数字,相当于[a-z A-Z 0-9 _ ] 注:还有下划线
\W 匹配 任何 非字母和数字,相当于[^a-z A-Z 0-9 _]
a|b 匹配a或者b
re模块
1 complie方法:将正则表达式的字符串形式编译为一个Pattern对象
2, match方法:从起始位置开始匹配符合规则的字符串,单次匹配,匹配成功,立即返回match对象,未匹配成功则返回None
3. search 方法:从整个字符串中匹配符合规则的字符串,单次匹配,匹配成功,立即返回Match对象,未匹配成功则返回None
4,findall 方法:匹配所有合规则的字符串,匹配到的字符串放到一个列表中,未匹配成功返回空列表
5,finditer 方法:匹配所有合规则的字符串,匹配到的字符串放到一个列表中,匹配成功返回
6,split 方法:根据正则匹配规则分割字符串,返回分割后的一个列表
7,sub 方法:替换匹配成功的指定位置字符串
JSON模块的使用
- json.loads()
把Json格式字符串解码转换成Python对象 从json到python的类型转化 - json.dumps()
实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串
从p - json.dump()
将Python内置类型序列化为json对象后写入文件 - json.load()
读取文件中json形式的字符串元素 转化成python类型
urllib库的基本使用
request它是最基本的HTTP请求模块,可以用来模拟发送请求,就像在浏览器中输入网址,然后敲击回车键一样,使用的时候只需要给库方法传入相关的URL的相关的参数即可.
error:异常处理模块,如果出现请求错误,我们课使用这个模块来捕获异常,然后进行重试或者其他操作,保证程序不会以为终止。
parse:这是一个工具模块,提供了许多url的处理方法,比如拆分,解析,合并等等
urlopen方法的使用
url:设置目标url
data:如果设置该参数,则请求默认为post请求
timeout:用于设置超时时间,单位为秒。
context:必须是一个ssl.SSLcontext类型,用来指定SSL设置,忽略未认证的CA证书
Request
使用urlopen直接发送请求,获取一些反爬手段低的网站,有些网站会根据请求头来判断是否是浏览器访问,则需要增加HTTP报头,必须创建一个Request实例来作为urlopen()的参数;而需要访问的url地址则作为Request实例的参数。
url参数是请求链接,这个是必传参数,其他的都是可选参数。
data(默认空) 参数跟urlopen()中的data参数用法相同。
headers(默认空)是一个字典,它除了在Request中添加,还可以通过调用Request实例的add_header()方法来添加请求头
unberifiable参数表示这个请求是否是无法验证的,默认值是False,意思就是说用户没有足够权限来选择接受这个请求的结果。例如我们请求一个HTML文档中的图片,但是我们没有自动抓取图像的权限,我们就要将unverifiable的值设置为True.(这个参数我们不需要设置)
method参数指的是发起HTTP请求的方式
urllib的异常错误处理
**URLError:**来自urllib库的error模块,继承自OSError,由request模块产生的异常都可以通过捕捉这个类来处理。
主要原因有:
没有网络连接
服务器连接失败
找不到指定的服务器
它具有一个属性reason,返回错误的原因
HTTPError
HTTPError是URLLError的子类,我们发出一个请求时,服务器都会对应一个response应答对象,其中它包含一个数字“响应状态码”
专门用来处理HTTP请求错误,比如未认证,页面不存在等
有三个属性:
code:返回HTTP的状态码
reasn:返回错误的原因
headers:返回请求头
parse模块下常用的url解析、合并、编码、解码方法
使用时需导入
from urllib import parse
urlencode()将字典构形式的参数序列化为url编码后的字符串
(常用来构造get请求和post请求的参数)
parse_qs()将url编码格式的参数反序列化为字典类型
quote()可以将中文转化为url编码格式
unquote:可以将url编码进行解码
urljoin()传递一个基础链接,根据基础链接可以将某一个不完整的链接拼接为一个完整链接
urlparse()实现URL的识别和分段(了解)
处理HTTPS请求 SSL证书验证
出现ssl.CertificateError:…
这种错误时,我们就需要单独处理SSL设置,忽略未认证的CA证书,让程序忽略SSL证书验证错误,即可正常访问。
. 表示忽略未经核实的SSL证书认证 context = ssl._create_unverified_context()
1
JSON模块的使用
- json.loads()
把Json格式字符串解码转换成Python对象 从json到python的类型转化 - json.dumps()
实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串
从p - json.dump()
将Python内置类型序列化为json对象后写入文件 - json.load()
读取文件中json形式的字符串元素 转化成python类型
- 爬取百度贴吧的一些图片,使用request、re、urllib模块
- 使用 Python 模块 re 实现解析小工具
- python中利用re模块使用正则表达式
- python爬虫之urllib模块的基本使用
- Python中的urllib模块使用详解
- Python3.x学习笔记[2.5]灵活使用urllib与re
- 正则表达式-re模块的使用
- Python3学习笔记 urllib模块的使用
- 【Pyhton网络爬虫】网络请求使用的urllib模块
- Python3学习笔记(urllib模块的使用)
- urllib模块的使用
- Python中urllib模块的使用
- 个人学习爬虫笔记之urllib模块的使用二
- python3.6通过urllib模块使用post/get方法
- Python使用urllib模块的urlopen超时问题解决方法
- Python——使用re模块实现正则表达式操作
- python 正则模块的使用(re)说明
- urllib模块爬虫在Python2在Python3中的使用
- Python3学习笔记(urllib模块的使用)
- 关于python中re模块split方法的使用