爬虫数据解析方法详解

数据解析的方法:

1、正则

2、bs4

3、xpath

4、pyquery

1、如何爬取图片数据?

方式1:基于requests

方式2:基于urllib

注:urllib模块作用和requests模块一样,都是基于网络请求的模块。当requests问世后就迅速代替了urllib

2、上述两种方法爬取图片的不同之处是什么?

使用urllib的方式爬取图片无法进行UA伪装,而requests方法可以。

3、分析开发者工具当中的Elements和network这两个选项对应的页面源码数据有何不同之处。

(1)Eelements中包含的显示的页面源码数据为当前页面所有的数据加载完毕后,对应的完整页面数据(包含动态加载数据)

(2)network中显示的页面源码数据仅仅为某一个单独的请求的响应数据(不包含动态加载数据)

4、数据解析的作用是什么?

用来实现聚焦爬虫

5、数据解析的通用原理是什么?

(1)指定标签的定位

(2)取出标签中存储的数据或者标签中属性中的数据

6、网页中显示存储在哪里?

都是存储在html的标签或标签的属性当中

第一部分 正则

常用的正则表达式

.:除换行之外的所有字符

[]:[aoe][a-w]匹配集合中的任意一个字符

d:数字[0-9]

D:非数字

W:非w

w:数字、字母、下划线、中文

s:所有的空白字符,包括空格、制表符、换页符等等。等价于[f ]

S:非空白

数量修饰:

* :任意多次

+:至少1次

?:可有可无 0次或者1次

{m}:固定m次

{m,}:至少m次

{m,n}:m到n次

边界:

$:以某某结尾

^:以某某开头

分组:(a,b)

贪婪模式:.*

非贪婪模式:.*?

第二部分 bs4

1、bs4解析的原理是什么?

(1)实例化一个Beautifulsoup对象,且将待解析的页面源码加载到该对象中

(2)调用Beautifulsoup对象中相关方法或者属性进行标签定位和文本数据提取

2、Beautifulsoup对象的实例化

(1)Beautifulsoup(fp,xml):用来将本地存储的html文档进行解析

(2)Beautifulsoup(page_text,/xml):用来将互联网上请求到页面源码数据进行解析

3、标签定位

(1)soup.tageName:只可以定位到第一次出现tagName标签

(2)soup.find(tageName,attaName=Vaule):属性定位

(3)soup.findALL:跟find一样的作用属性定位,只不过findALL返回的是列表

(4)soup.select(tang>ul>li)

4、取数据

(1).text:返回的是该标签下的所有文本内容

(2).stribg:返回的是该标签直系的文本内容

第三部分 xpath表达式

1、解析原理

(1)实例化一个etree的对象,且将待解析的页面资源加载到该对象中

(2)调用etree对象,且将待解析的页面源码加载到该对象中

2、实例化etree对象

(1)etree.parse(filename):将本地html文档加载到该对象中

(2)etree.HTML(page_text):网站获取加载到该对象

3、标签定位

属性定位:tagName[@attrName=Vaule]

4、取文本

(1)/text():直系文本内容

(2)//text():所有的文本内容

5、取属性

/attrName

6、局部数据解析

将定位到的标签作为待解析的数据,再次用xpath表达式解析数据

注:在局部数据解析的时候,xpath表达式中要使用./操作,./表示的就是当前局部数据(xpath的调用者)

总结:

最常用的解析方法还是bs4和xpath,所以掌握这两种方法是主要的,需要多多练习。

经验分享 程序员 微信小程序 职场和发展