爬虫数据解析
正则表达式
1.正则入门
单字符
1
2
3
4
5
6
7
8. 除换行意外的所有字符
[] [aoe] [a-w] 匹配集合中任意一个字符
\d [0-9] 数字
\D 非数字
\w 数字、字母、下划线、中文
\W 非\w
\s 所有空白字符,包括空格、制表符、换页符等等,等价于 [\f\n\r\t\v]
\S 非空白数量修饰
1
2
3
4
5
6* 任意多个
+ 至少一次
? 可有可无,0次或者1次
{m} 固定m次 hello{3}
{m,} 至少m次 hello{3,}
{m,n} m至n次边界
1
2$ 以某某结尾
^ 以某某开头分组
1
(ab)
贪婪模式
1
.*
非贪婪模式(惰性模式)
1
.*?
其他
1
2
3
4
5re.I 忽略大小写
re.M 多行匹配
re.S 单行匹配
re.sub(正则表达式, 替换内容, 字符串)
2.常用正则表达式
说明 | 正则表达式 |
---|---|
网址(URL) | [a-zA-Z]+://[^\s]* |
BS4
xpath
跳过某个序号的标签进行匹配
比如这里想跳过第一个<tr>
标签,可以用到position>1。
1 | XXX.xpath("//tr[position()>1]/td[1]/input/@value").extract() |
XPath查找没有id或类的元素
https://qa.1r1g.com/sf/ask/168289131/
很简单:
1 | //tr[not(@id) and not(@class)] |
这会给你所有tr
缺乏这两种元素id
和class
属性.如果您希望所有tr
元素都缺少其中一个,请使用or
而不是and
:
1 | //tr[not(@id) or not(@class)] |
当以这种方式使用属性和元素时,如果属性或元素具有值,则将其视为是真的.如果它丢失则将其视为错误.
爬虫链接提取器中的正则注意点
1.问号?
用\?
进行转义
2.匹配表达式前,最好加r
3
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 吕小布の博客!
评论