re.compile(正则表达式).findall(源字符串)
方法 | 说明 |
---|---|
re.match | 从字符串的起始位置匹配一个模式 |
re.search | 返回第一个成功的匹配 |
re.compile | 编译正则表达式 |
re.findall | 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。 match 和 search 是匹配一次, findall 匹配所有。 |
re.finditer | 和 findall 类似,在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。 |
re.split | split 方法按照能够匹配的子串将字符串分割后返回列表 |
groups() | 返回所有括号匹配的字符,以tuple格式 |
re.sub | Python 的re模块提供了re.sub用于替换字符串中的匹配项。 |
方法 | 说明 |
---|---|
普通字符 | 正常匹配 |
\n | 匹配换行符 |
\t | 匹配制表符 |
\w | 匹配字母、数字、下划线 |
\W | 匹配除字母、数字、下划线 |
\d | 匹配十进制数字 —> [0-9] |
\D | 配置除十进制数字 —> [^0-9] |
\s | 匹配空白字符,包括空格、制表符、换页符 |
\S | 匹配除空白字符 |
[ab89x] | 原子表,匹配ab89x中的任意一个 |
[^ab89x] | 原子表,匹配除ab89x以外的任意一个 |
. | 匹配除换行符外任意一个字符 |
^ | 匹配开始的地方 |
$ | 匹配结束的地方 |
* | 前一个字符出现0/1/多次 |
? | 前一个字符出现0/1次 |
+ | 前一个字符出现1/多次 |
{n} | 前一个字符恰好出现n次 |
{n,} | 前一个字符至少n次 |
{n,m} | 前一个字符至少n次,之多m次 |
| | 模式选择符或 |
() | 模式单元, 通俗来说就是想提取什么内容,就在正则中用小括号将其括起来 |
贪婪模式:尽可能多的匹配
懒惰模式:尽可能少的匹配,精准模式
如下组合为懒惰模式:(1) *? (2) +?
re.S 让.也可以匹配多行
re.l 让匹配时忽略大小写
import re
content = 'Hello 123 4567 World_This is a Regex Demo'
result = re.match('^Hello\s\d\d\d\s\d{4}\s\w{10}', content)
结果:Hello 123 4567 World_This
方法 | 说明 |
---|---|
/ | 逐层提取 |
text() | 提取标签下面的文本 |
//标签名** | 提取所有名为**的标签 |
//标签名[@属性=‘属性值’] | 提取属性为XX的标签 |
@属性名 | 代表取某个属性值 |
from lxml import etree
parser = etree.HTMLParser(encoding='utf-8')
html = etree.parse("http://www.tianqihoubao.com/", parser=parser)
html = html.xpath('//*[@id="content"]/table[2]')
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序,是一个出色的python解释器。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。
方法 | 说明 |
---|---|
bs.title | 获取title标签的名称 |
bs.title.text | 获取title标签的内容 |
bs.title.name | 获取title的name |
bs.title.string | 获取head标签的所有内容 |
bs.div | 获取第一个div标签中的所有内容 |
bs.div[“id”] | 获取第一个div标签的id的值 |
bs.a | 获取a标签 |
bs.find_all(“a”) | 获取所有的a标签 |
bs.find(id=“u1”) | 获取id=“u1” |
from bs4 import BeautifulSoup
thisurl = "http://192.168.0.138"
thisdata = requests.get(thisurl, headers=headers).text
# BeautifulSoup解析初始化
soup = BeautifulSoup(thisdata, 'html.parser')
# 匹配标题
title = soup.h1.text
PyQuery库是jQuery的Python实现,能够以jQuery的语法来操作解析 HTML 文档,易用性和解析速度都很好,和它差不多的还有BeautifulSoup,都是用来解析的。相比BeautifulSoup完美翔实的文档,虽然PyQuery库的文档弱爆了, 但是使用起来还是可以的,有些地方用起来很方便简洁。
from pyquery import PyQuery as pq
doc = pq('https://www.baidu.com')