yangte

Python网络爬虫之三种数据解析方式
引入
回顾requests实现数据爬取的流程
指定url
基于requests模块发起请求
获取响应对象中的数据
进行持久化存储
其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析。因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据。因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式。至此,我们的数据爬取的流程可以修改为:

指定url
基于requests模块发起请求
获取响应中的数据
数据解析
进行持久化存储
今日概要

正则解析
xpath解析
bs4解析
知识点回顾

requests模块的使用流程
requests模块请求方法参数的作用
抓包工具抓取ajax的数据包

一.正解解析
常用正则表达式回顾:
单字符:
. : 除换行以外所有字符
[] :[aoe] [a-w] 匹配集合中任意一个字符
\d :数字 [0-9]
\D : 非数字
\w :数字、字母、下划线、中文
\W : 非\w
\s :所有的空白字符包,括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S : 非空白
数量修饰:
* : 任意多次 >=0
+ : 至少1次 >=1
? : 可有可无 0次或者1次
{m} :固定m次 hello{3,}
{m,} :至少m次
{m,n} :m-n次
边界:
$ : 以某某结尾
^ : 以某某开头
分组:
(ab)
贪婪模式: .*
非贪婪(惰性)模式: .*?

re.I : 忽略大小写
re.M :多行匹配
re.S :单行匹配

re.sub(正则表达式, 替换内容, 字符串)

回顾练习:
import re

提取出python

key="javapythonc++php"
re.findall(\'python\',key)[0]
#####################################################################

提取出hello world

key="

hello world

"
re.findall(\'

(.*)

\',key)[0]
#####################################################################

提取170

string = \'我喜欢身高为170的女孩\'
re.findall(\'\d+\',string)
#####################################################################

提取出http://和https://

key=\'http://www.baidu.com and https://boob.com\'
re.findall(\'https?

分类:

技术点:

相关文章: