分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

基于BeautifulSoup库的HTML内容的查找

发布时间:2023-09-06 02:30责任编辑:顾先生关键词:HTML

一、BeautifulSoup库提供了一个检索的参数:

<>.find_all(name,attrs,recursive,string,**kwargs),它返回一个列表类型,存储查找的结果。它的一些对应的简写形式是:

  <tag>(...) <=> <tag>.find_all(...)

  soup.(...) <=> soup.find_all(...)

?name:按照标签名称进行检索,可以同时对多个标签名称同时检索

?attr:按照标签的属性值进行检索,可以标注为属性检索

?recursive:是否对子孙全部检索,默认为True

?string:对标签中字符串区域进行检索,<>...string...</>

 1 import requests 2 from bs4 import BeautifulSoup 3 import re 4 ?5 r = requests.get(‘http://python123.io/ws/demo.html‘) 6 r.raise_for_status() 7 r.encoding = r.apparent_encoding 8 demo = r.text 9 soup = BeautifulSoup(demo,"html.parser")10 11 print(soup.find_all(‘a‘))#按照name进行检索12 print(soup.find_all([‘a‘,‘b‘]))#同时对多个name标签进行检索13 for tag in soup.find_all(re.compile(‘b‘)):#对以b开头的所有标签进行检索14 ????print(tag.name)15 ????print(tag)16 17 print("")18 print(soup.find_all(‘p‘,‘course‘))#按照标签里面的属性值进行检索19 print(soup.find_all(id=‘link1‘))#按照指定的属性的属性值进行检索,严格匹配20 print(soup.find_all(id = re.compile(‘link‘)))#特定属性值的不严格匹配21 22 print("")23 print(soup.find_all(‘a‘,recursive = False))#不对所有子孙检索,只检索儿子节点,起点是html标签,如果返回的是空列表[],就代表a标签是在儿子标签之后的标签里面24 25 print(soup.find_all(string = ‘Basic Python‘))#检索字符串,严格匹配26 print(soup.find_all(string = re.compile(‘Python‘)))#不严格匹配

二、<>find_all(..)的扩展方法

方法说明
<>.find()搜索,只返回一个结果,字符串类型,同.find_all()参数
<>.find_parent()在先辈中搜索,只返回一个结果,返回字符串类型,同.find()参数
<>.find_parents()在先辈中搜索,返回列表类型,同.find_all()参数
<>.find_next_sibling()在后续平行节点中搜索,只返回一个结果,返回字符串类型,同.find()参数
<>.find_next_siblings()在后续平行节点中搜索,返回一个列表类型,同.find_all()参数
<>.find_previous_sibling()在前续平行节点中搜索,只返回一个结果,返回字符串类型,同参.find()数
<>.find_previous_siblings()在前续平行节点中搜索,返回一个列表类型,同.find_all()参数

基于BeautifulSoup库的HTML内容的查找

原文地址:https://www.cnblogs.com/BASE64/p/10291304.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved