首页 > 其他分享 >day10 BS4

day10 BS4

时间:2024-06-07 15:33:49浏览次数:20  
标签:匹配 re BS4 ret soup day10 print find

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次数的限制

标签:匹配,re,BS4,ret,soup,day10,print,find
From: https://www.cnblogs.com/FGOO/p/18237279

相关文章

  • 代码随想录算法训练营day10(栈与队列)
    代码随想录算法训练营day10(栈与队列):学习内容:std::queue和std::stack是C++标准库中提供的队列和栈的容器适配器,它们分别基于队列和栈的概念,提供了一组简单的操作接口。std::queuestd::queue是一个先进先出(FIFO)的队列容器适配器。它提供了队列的基本操作,包括入队(pus......
  • day10今日笔记
    今日笔记grepgrep是对数据进行过滤查找关键字源数据可以是文件内容grephello/opt/hello.txt,找出存在hello的那一行命令的执行结果,这个需要结合管道符使用,cat/etc/passwd|grep'root'测试数据Iteachlinux.Ilikepython.Myqqis877348180.Mynameis......
  • m1_day10
    课程内容:String类常见的面试题String类常见的20个方法String类常见的面试题:new和不new之间的区别?Stringx="etoak"; Stringy=newString("etoak");不new的方式涉及到常量池查找机制永远先去常量池查看是否缓存过如果缓存过那么直接将值取出来使用如果没......
  • Python基础-模块和面向对象-shutil、re、bs4、requests模块
    概要:模块自定义模块(已经讲了)内置模块shutilre正则表达式第三方模块requests模块bs4模块面向对象:面向对象(Object-OrientedProgramming),简称OOP,是一种编程范式,它使用“对象”来设计软件,这些对象包含了数据(属性)和可以操作这些数据的方法。面向对象的核心......
  • bs4爬虫解析
    记录使用bs4解析网页的基本方法,,完整使用文档可见bs4使用文档安装bs4pipinstallbs4创建beautifulSoup对象frombs4importBeautifulSoupsoup=BeautifulSoup(open("index.html"))soup=BeautifulSoup("<html>data</html>")soup=BeautiFulSouo(res)可以传入字符串,......
  • day10_01_我的Java学习笔记 (JavaSE进阶课程预备)
    JavaSE进阶课程预备1.JavaSE加强课程简介2.IDEA开发模式统一工程,相当于一个小区的院子;模块,是小区的哪一栋;包,是这栋楼的那一单元类,是这个单元的哪一层楼;对象,是这层楼具体的某一户房间。eg:滢水山庄二区--工程9栋--模块4单元--包8楼--类......
  • day10_02_我的Java学习笔记 (JavaSE加强课程介绍、先建空工程--再建模块--然后建包--
    JavaSE基础加强课程介绍1.JavaSE加强课程简介2.IDEA开发模式统一工程,相当于一个小区的院子;模块,是小区的哪一栋;包,是这栋楼的那一单元类,是这个单元的哪一层楼;对象,是这层楼具体的某一户房间。eg:溪山美地二区--工程9栋--模块4单元--包8楼--......
  • JAVA语言学习-Day10、11、12
    参考教学视频:秦疆learnJava-JUC1.什么是JUCjava.util工具包、包、分类java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks2.线程和进程举例:开启一个Typora(进程),输入、自动保存(线程)进程:一个程序一个进程往往可以包含多个线程,至少包含一个线程:写......
  • LeetCode刷题记录——day10
    1、https://leetcode.cn/problems/rotate-image/description/?envType=study-plan-v2&envId=2024-spring-sprint-100classSolution{public:voidrotate(vector<vector<int>>&matrix){intn=matrix.size();for(inti=0;......
  • bs4的使用 遍历文档树
     bs4的使用#遍历文档树#搜索文档树(5种过滤规则)#limit和recursive参数importrequests#pip3installbeautifulsoup4解析html和xml,修改html和xmlfrombs4importBeautifulSoup#res=requests.get('https://www.autohome.com.cn/news/1/#liststart')##withop......