正则表达式解析网页

首先将源代码变成字符串,然后用正则表达式匹配想要的数据

模式描述模式描述
.匹配任意字符,除了换行符\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))

更多推荐

正则表达式解析网页