使用正则表达式解析网站
常见的正则字符和含义
模式 | 描述 |
---|---|
. | 匹配任意字符,除了换行符 |
* | 匹配前一个字符0次或多次 |
\s | 匹配空白字符 |
+ | 匹配前一个字符1次或多次 |
? | 匹配前一个字符0次或1次 |
\S | 匹配任何非空白字符 |
^ | 匹配字符串开头 |
$ | 匹配字符串末尾 |
() | 匹配括号内的表达式,也表示一个组 |
\d | 匹配数字,等价于[0-9] |
\D | 匹配任何非数字,等价于[^0-9] |
\w | 匹配字母数字,等价于[A-Za-z0-9] |
\W | 匹配非字母数字,等价于[^A-Za-z0-9] |
[] | 用来表示一组字符 |
接下来介绍的是:re.match\re.reach\re.findall
re.match:从字符串起始位置匹配一个模式,如果从起始位置匹配不了,match就返回none.
re.match(pattern,string,flags=0)
pattern是正则表达式,包含一些特殊的字符,string为要匹配的字符串,flags用来控制正则表达式的匹配方式。
re.search扫描整个字符串并返回第一个成功的匹配
re.findall可以找到所有的匹配
使用BeautifulSoup解析网站
BeautifulSoup可以从HTML或XML文件中提取数据
主要的解析器及其优缺点:
解析器 | 使用方法及优缺点 |
---|---|
python标准库 | BeautifulSoup(Markup,“html.parser”)优势:python的内置标准库,执行速度适中;文档容错能力强; 劣势L:速度较慢 |
Lxml HTML解析器 | BeautifulSoup(markup,“xml”) 优势:速度款,文档容错能力强,bs4自带;无缺点 |
lxml XML解析器 | BeautifulSoup(markuo,[“lxml”,“xml”]) BeautifulSoup(markup,“xml”) 优势 |