这一章看的的有点慢,原因是最近工作确实也忙,还有一个原因是晚上回来晚也要花时间锻炼,天气热没心情看啊,所以看书的时间很少。
感到很惭愧,任何理由都不是不看书的原因,错在自己变懒了。
接下来应该轻松一点了,晚上还是要看书的。
目录:
5.1 正则表达式含义
5.2 正则基础知识
–1.原子
–2. 元字符
–3. 模式修正
–4. 贪婪模式与懒惰模式
5.3 正则常见函数
5.4 常见实例
–实例1:匹配.com或.cn后缀的URL网址
–实例2:匹配电话号码
–实例3:匹配电子邮件
5.5 Cookie(客户端)
5.6 Cookiejar实战
5.1 正则表达式含义
描述字符串排列的一套规则。
5.2 正则基础知识
1.原子
1)普通字符
数字、大小写字母、下划线等
1 | import re |
2)非打印字符
符号 | 含义 |
---|---|
\n | 换行符 |
|制表符 |
1 | import re |
3)通用字符
符号 | 含义 |
---|---|
\w | 任意一个字幕、数字或下划线 |
\W | 与上反 |
\d | 一个十进制数 |
\D | 反上 |
\s | 一个空白字符 |
\S | 反上 |
1 | import re |
4)原子表
[xyz],地位平等的原子,匹配一个。
“[^xyz]py”,[^]除括号里的都匹配。
1 | import re |
2. 元字符
即正则表达式中具有一些特殊含义的字符。
|分类序号|分类名|符号|含义|匹配个数|
|–|–|–|–|–|–|
|1|任意匹配元字符|.|除换行符以外的任意字符|1|
|2|边界限制元字符|^|字符串开始位置|-|
|2|边界限制元字符||$|字符串结束位置|-|
|3|限定符|*|0、1或多次前面的原子|>=0|
|3|限定符|?|0次或1次前面的原子|0、1|
|3|限定符|+|1或多次前面的原子|>=1|
|3|限定符|{n}|前面的原子恰好出现n次|n|
|3|限定符|{n,}|至少n次|>=n|
|3|限定符|{n,m}|n到m次|>=n,<=m|
|4|模式选择符|||或|-|
|5|模式单选符|()|大原子,整体|-|
3. 模式修正
在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整等功能。
符号 | 含义 |
---|---|
I | 忽略大小写 |
M | 多行匹配 |
L | 本地化识别匹配 |
U | 根据Unicode字符集解析字符 |
S | 让.匹配包括风换行符,则.可匹配任意一个字符 |
1 | import re |
4. 贪婪模式与懒惰模式
贪婪者,尽可能多的匹配;懒惰者,尽可能少的匹配。
1 | import re |
“.“ - 贪婪
“.?” - 懒惰
5.3 正则常见函数
- re.match()
- re.search()
- 全局匹配函数re.compile(pattern).findall(string)
- re.sub()函数,替换某些字符串,re.sub(pattern,rep,string,max)
5.4 常见实例
实例1:匹配.com或.cn后缀的URL网址
1 | import re |
实例2:匹配电话号码
1 | import re |
实例3:匹配电子邮件
1 | import re |
1 | import re |
匹配邮件的关键是先确定「@」符号,然后观察两侧的字符。
5.5 Cookie(客户端)
保存会话信息的另外一种方式,Session存储在服务端。
HTTP协议是无状态协议,无法维持会话之间的状态。
服务器端给客户端发SessionID等信息,这些会保存在客户端的Cookie中。
Cookie可以第一次登陆成功后,保持登陆状态进行内容的爬取。
5.6 Cookiejar实战
Python3-Cookiejar;Python-Cookielib库。
登陆界面地址:http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes
第一步:使用F12调试界面或Fiddler等工具获取真实的(post方法)登录地址:http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LU7oB
第二步:查看源代码,构造表单数据;找到username和password两个字段。
1 | { |
第三步,写代码爬取网页
1 |
|
打开chinaunix.html发现已经登录,但打开chinaunix2.html时未登录。因为没有设置Cookie啊,HTTP无状态协议啊。
导入Cookie步骤:
- 1.导入处理模块http.cookiejar
- 2.使用http.cookiejar.CookieJar()创建CookieJar对象
- 3.使用HTTPCookieProcessor创建cookie处理器,以其为参数构建opener对象
- 4.创建全局默认的opener对象
1 | # 带post数据来爬取 |
打开chinaunix4.html 发现已经登录了,成功。说明登录状态已通过Cookie保存了。
这章看的时间有点长了,下面第六章-手写爬虫,会有更多的实战,开干了伙计。
- 本文作者: Linking
- 本文链接: https://linking.fun/2017/07/30/精通Python网络爬虫-第五章-正则表达式与Cookie的使用/
- 版权声明: 版权所有,转载请注明出处!