re.findall("规则","待匹配字符串",模式)
re.search / group//指定拿什么数据
上一节补充:with open 伴随打开 as f 赋值聚鼎
s = f.read //所有字符串打印出来赋值给s
re.S通配符能够匹配包括换行符的一切
r"\d+" 原生字符串解析所有的数字
re.search只第一个匹配条件的
re.findall匹配全部
ret.group提取匹配的数据 \ \通过标记的数据只提取某一项的内容
?p<名称>//标记一定加在小括号前面
re.match 起始判断的
re.split(r"\s+'',txt)\贪婪匹配全部的空格
print("12 34 56 88").replace("88","yuan")//88替换原则
全部提货:ret = re.sub(r"\d+","yuan",s) 对应 :匹配的数字,替换,替换表
ret = re.sub(r"\d+","yuan",s,2) :指定次数
compile 提升性能,加载规则需要性能
reg = re.compile(r"\d+“)指定规则\相当于函数的调用
print(reg.findall(s1)))调用规则
前面加r表示不要解析规则,如果py先解析规则会引发报错。r+之后把规则当初原生字符串(转译字符)
BS4初识 全称Beautiful Soup是python的一个库//主要功能从网页抓取数据 针对于html
是可以从HTML或XML文件中提取数据的py库
安装:BS4和BS
先实例化对象:soup = BeautifulSoup(text)
print(soup.find_all("a"))//提取全部的a标签
BeautifulSoup的对象(text,'html.parser')
print(soup.b)//打印b标签的 格式是tag可提取的 只能找到第一个
地址概念:先找到大的在找中的然后小的,#print(soup.p.b.name)
#print (soup.a["href"])//提取超链接
#print(soup.p.text)和(soup.p.string)一个只提取文本
$\textcolor{GreenYellow}{print(soup.p.text)和(soup.p.string)一个只提取文本:}$
$\textcolor{Yellow}{颜色:Yellow}$
ret = soup.find_all("a")
d = {}
for tag in ret:
val = tag.text
h = tag.attrs.get("href")
print(val,h)
d[val] = h //以val为键以h为值
print(d)
print(soup.p.contents) 都是子节点
print(soup.p.children) //迭代器封装
print(list(soup.p.children)) //强转然后显示内容
print(soup.a.next_sibing)//下一个兄弟,加几个找到下下个兄弟
print(soup.a.previous_sibling)//找上一个标签
$\textcolor{Yellow}{搜索文档树}$
find_all()方法 name参数
1.字符串,即标签名
ret = soup.find_all(name = "b")
print(ret)
2.正则
ret = soup.find_all(name=re.compile('^b')) //查找b开头的
3.列表
ret = soup.find_all(name=['a',"b"])
4.方法
按属性过滤
ret = soup.find_all(class_="sister")
按文本过滤:
ret = soup.find_all(string=re.compile("匹配开头词"),limit=1)//这是加上正则,不加正则就没有完整的,limt次数的限制