正则表达式解析网页
首先将源代码变成字符串,然后用正则表达式匹配想要的数据
模式 | 描述 | 模式 | 描述 |
---|---|---|---|
. | 匹配任意字符,除了换行符 | \s | 匹配空白字符 |
* | 匹配前一个字符0或多次 | \S | 匹配任何非空白字符 |
+ | 匹配前一个字符1或多次 | \d | 匹配数字,[0~9] |
? | 匹配前一个字符0或1次 | \D | 匹配任何非数字,[ ^0~9 ] |
^ | 匹配字符串开头 | \w | 匹配字母数字,[A-Za-z0-9] |
$ | 匹配字符串结尾 | \W | 匹配非字母数字,[ ^A-Za-z0-9 ] |
( ) | 匹配括号内的表达式,也表示一个组 | [ ] | 用来表示一组字符 |
re.match 只能从字符串的起始位置进行匹配
语法格式
re.match(pattern,string,flags=0)
pattern:正则表达式
string:要匹配的字符串
flags:正则表达式的匹配方式
import re
s="aaa bbb ccc ddd eee"
m=re.match(r'(.*) ccc (.*? )',s)
# 匹配整个字符串的结果
print(m.group(0))
# (.*)的结果
print(m.group(1))
# (.*? )的结果
print(m.group(2))
# 结果列表
print(m.groups())
re.search 扫描整个字符串 返回第一个成功的匹配
s="aaa bbb ccc ddd eee"
m1=re.match('ccc',s)
m2=re.search('ccc',s)
print(m1)
print(m2)
re.findall 找到所有匹配的结果,并且以列表的形式返回
import re
s="aaa12313bbb6788ccc56789ddd eee"
m=re.findall('[0-9]+',s)
print(m)
解析网页
获取博客的标题
分析html
编写正则表达式
<h4 data-v-6fe2b6a7>(.*?)</h4>
获取h4标签中间的标题
使用requests获取网页源代码
利用正则表达式解析网页
import re
import requests
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0'
}
url='https://blog.csdn/weixin_42403632'
html=requests.get(url,headers=headers)
titles=re.findall('<h4 data-v-6fe2b6a7>(.*?)</h4>',html.text)
for i in titles:
print(i)
print(len(titles))
更多推荐
正则表达式解析网页
发布评论