您的位置:首页 > 其它

urllib和re模块的使用

2019-09-07 15:44 85 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_43706512/article/details/100599588

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模块的使用

  1. json.loads()
    把Json格式字符串解码转换成Python对象 从json到python的类型转化
  2. json.dumps()
    实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串
    从p
  3. json.dump()
    将Python内置类型序列化为json对象后写入文件
  4. 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模块的使用

  1. json.loads()
    把Json格式字符串解码转换成Python对象 从json到python的类型转化
  2. json.dumps()
    实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串
    从p
  3. json.dump()
    将Python内置类型序列化为json对象后写入文件
  4. json.load()
    读取文件中json形式的字符串元素 转化成python类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: