爬虫-基于bs4库的HTML内容查找方法
bs4有一个find_all(name,attrs,recursive,string,**kwargs)方法,返回一个列表类型,存储查找的结果
name 对标签名称的检索字符串
attrs 对标签属性值的检索字符串,可标注属性检索,可查找某标签中是否含有特定的字符串
recursive 是否对子孙全部检索,默认True
string <>...</>中字符串区域的检索字符串
举例说明:
name
soup.find_all('a')#返回a标签的内容 soup.find_all(['a','b'])#返回a和b标签的内容 for tag in soup.find_all(True):#打印文档中的所有标签名字 print(tag.name) ''' 返回 html head title body p b p a a ''' #使用正则化后: import re#如果我们只想得到以b开头的标签,n那么我们需要正则表达式,re是相应的库 for tag in soup.find_all(re.compile('b')): print(tag.name) #返回 body b
attrs:
soup.find_all('p','course')#查找p标签中包含'course'的信息 soup.find_all(id='link1') '''返回 [<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>] ''' soup.find_all('link')#返回[] import re soup.find_all(id=re.compile('link'))#利用正则表达式查找包含link的标签内容 ''' [<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>, <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">Advanced Python</a>] '''
recursive:
soup.find_all('a',recursive=False) #返回[]表明儿子节点上没有a标签
string:
soup.find_all(string='Basic Python') #['Basic Python'] import re soup.find_all(string=re.compile('python'))#所有在字符串中出现Python的字符串检索 ''' ['This is a python demo page', 'The demo python introduces several python courses.'] '''
另外,我们可以使用
<tag>(..)等价于<tag>.find_all(..)
soup(..)等价于soup.find_all(..)
find的扩展方法
方法 | 说明 |
<>.find() | 搜索切只返回一个结果,字符串类型,同find_all()参数 |
<>.find_parents() | 在先辈节点中搜索,返回列表类型,同find_all()参数 |
<>.find_parent() | 在先辈节点中返回一个结果,同上 |
<>.find_next_siblings() | 在后续平行节点中搜索,同上 |
<>.find_next_sibling() | 在后续节点中返回一个结果,同上 |
<>.find_previous_siblings() | 在前序平行节点中搜索,同上 |
<>.find_previous_sibling() | 在前序平行节点中返回一个结果,同上 |
invictus maneo!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 2025成都.NET开发者Connect圆满结束
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 用一种新的分类方法梳理设计模式的脉络