爬虫(三)笔记
程序员文章站
2024-01-27 17:05:40
...
正则表达式
常用正则表达式的方法:
- re.compile(编译)
- pattern.match(从头找一个)
- pattern.search(找一个)
- pattern.findall(找所有)
- pattern.sub(替换)
正则使用的注意点
- re.findall(“a(.*?)b”,“str”),能够返回括号中的内容,括号前后的内容起到定位和过滤的效果
- 原始字符串r 待匹配字符串中有反斜杠的时候,使用r ,能够忽视反斜杠带来的转义的效果
- 点号默认情况匹配不到\n
- ‘\s’能够匹配空白字符,不仅仅包含空格,还有’\t|\r|\n’
xpath和lxml类库
什么是xpath :
xpath 是一门在HTML\XML,文档中查找信息的语言,可用来在HTML\XML文档中对元素和属性进行遍历
xpath学习重点
-
使用xpath helper 或者是chrome 中的copy xpath 都是从element中提取的数据,但是爬虫获取的是url 对应的响应,往往和element中不一样
-
获取文本
- ‘a/text()’ 获取a 下的文本
- ‘a//text()’ 获取a 下的所有标签的文本
- ‘//a[text()=‘下一页’]’ 选择文本为下一页三个字的a标签
-
‘@符号’
-
‘a/@href’
-’//ul[@id="."]’ -
‘//’
-
在xpath开始的时候表示从当前html 中任意位置开始选择
-
‘li//a’ 表示li下的任何一个标签
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200516222424577.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjQ4NTg0Nw==,size_16,color_FFFFFF,t_70
Lxml库
使用入门
- 导入lxml 的etree 库
from lxml import etree
- 利用etree.HTML ,将字符串转化为Element对象
- Element 对象具有xpath的方法
html =etree.HtML(text)
html.xpath("***")
lxml 使用注意点
-
lxml 能够修正HTML 代码,但是可能会改错了
- 使用etree.tostring 观察修改后的html 的样子,根据修改后的进行写xpath
-
提取页面数据的思路
-
先分组,取到一个包含分组标签的列表
-
遍历 ,取其中的每一组进行数据的提取,不会造成数据的对应错乱