BeautifulSoup将复杂的HTML文档转换成一个复杂的树形结构.每个节点都是Python对象.所有对象可以归纳为四种:Tag , NavigableString , BeautifulSoup , Comment .

1.Tag对象最重要的属性:Name:标签的名字;attributes:属性(用class指代)

2.BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,它支持 遍历文档树 和 搜索文档树 中描述的大部分的方法.因为 BeautifulSoup 对象并不是真正的HTML或XML的tag,所以它没有name和attribute属性.但有时查看它的 .name 属性是很方便的,所以 BeautifulSoup 对象包含了一个值为 “[document]” 的特殊属性 .name

3.字符串常被包含在tag内.Beautiful Soup用 NavigableString 类来包装tag中的字符串,如果想在Beautiful Soup之外使用 NavigableString 对象,需要调用 unicode() 方法,将该对象转换成普通的Unicode字符串,否则就算Beautiful Soup已方法已经执行结束,该对象的输出也会带有对象的引用地址.这样会浪费内存.

4.Comment 对象是一个特殊类型的 NavigableString 对象,用来完成文本注释.

既然BeautifulSoup将html文档转换为复杂的树形结构,然后来介绍如何遍历html文档树:

子节点:.contents将子节点以列表的方式输出(含内容);.children返回子节点的列表生成器,可以遍历输出;contents和children只查找第一个子节点,而.descendants可对所有子节点进行递归循环;

父节点:.parent 属性来获取某个标签或字符串的父节点;.parents 属性可以递归得到元素的所有父辈节点

兄弟节点:.next_sibling获取下一个兄弟节点; .previous_sibling获取前一个兄弟节点,同样加s返回所有前或者后兄弟的列表生成器,可遍历输出.

接下来介绍find_all()函数,首先要明确find_dall总返回一个列表,如果没有找到则返回空:BeautifulSoup提供了强大的搜索函数find 和findall,这里的两个方法(findAll和 find)仅对Tag对象以及,顶层剖析对象有效。其标准引用形式为:findAll(name, attrs, recursive, text, limit, **kwargs)

1.通过标签名查找:

1 for link in soup.find_all('a'): #soup.find_all返回的为列表

2 print(link.get('href'))

2.通过标签属性值查找:

1 pid=soup.findall('p',id='hehe') #通过tag的id属性搜索标签

#print(soup.find_all(attrs={'class':'footer'}))

3.通过re正则表达式搜索tag标签内容:

pid=soup.findAll(id=re.compile("he$")) #正则表达式的使用

---恢复内容结束---

python+find_all函数_BeautifulSoup库之find_all函数相关推荐

  1. python定义fmax_Python标准库:内置函数max(iterable, *[, key, default])说明

    max(arg1, arg2, *args[, key]) 本函数是迭代对象iterable进行比较,找出最大值返回.当key参数不为空时,就以key的函数对象为判断的标准. 例子: #max() a ...

  2. python如何调用dll库中的函数_Python调用dll库接口-ctypes方法

    背景 最近需要用python写个脚本程序(win10 环境),需要调用现成的dll库完成这项任务,对于一直在Linux平台上开发程序的本人来说,从没有过使用dll的经历(不得不说还是so大法好),遇到 ...

  3. linux封装函数,libc库和封装函数 | 求索阁

    Linux系统调用这部分经常出现两个词:libc库和封装函数,不知道你是否清楚它们的含义? libc 1)libc概念 libc是Stantard C Library的简称,它是符合ANSI C标准的 ...

  4. python使用第三方函数库_Python(七)python下的内部函数库和第三方函数库

    返回脚本百事通 在dateutil中,吸引我的东西有2个,1个是parser,1个是rrule. 其中parser是根据字符串解析成datetime,而rrule是则是根据定义的规则来生成dateti ...

  5. Python直接调用C库的printf()函数打印一条消息

    github博客传送门 csdn博客传送门 话不多说直接上代码 # 直接从 C 库中调用 printf()函数打印一条消息 # Windows 中的 C 库位于 C:\WINDOWS\system32 ...

  6. c语言 offsetof函数,C 库宏 - offsetof()函数

    宏offsetof 标准库stddef.h 定义 size_t offsetof(type, member); 分析 C 库宏 offsetof(type, member) 会生成一个类型为 size ...

  7. 【Python】Numpy库之符号函数sign()的介绍及用法

    1.sign()函数功能介绍 sign()是Python的Numpy中的取数字符号(数字前的正负号)的函数. 2.sign()函数用法代码演示 #导入numpy库 import numpy as np ...

  8. 移植 Python 量化交易 TA-Lib 库到函数计算

    TA-Lib,全称"Technical Analysis Library", 即技术分析库,是 Python 金融量化的高级库,涵盖了 150 多种股票.期货交易软件中常用的技术分 ...

  9. node python复用代码_python-代码复用(函数、lambda、递归、PyInstaller库)

    一.函数 1.函数定义 def  函数名(参数列表): 2.返回值 return 返回值可以有多个,其实是返回一个tuple ##多个返回值 def sumDiff(x,y): return x+y, ...

最新文章

  1. php7与php5的区别,PHP7和PHP5区别
  2. qt 表格中插入一行_在EXCEL表格中,快速插入多行、多列的技巧
  3. Android 城市选择,热门城市,全部城市(美团、滴滴、淘宝)
  4. C#LeetCode刷题-二分查找​​​​​​​
  5. java解析json文件_Java性能优化:正确的解析JSON文件
  6. linux下进程的创建代码,Linux下进程创建分析
  7. java Future FutureTask 并发操作
  8. Java21天打卡练习Day21-集合map
  9. 1362:家庭问题(family)
  10. 卸载linux grub rescue,卸载linux后出现“grub rescue”,怎么处理?
  11. 家有经济适用男牛仔很忙
  12. 微信小程序之json-server环境搭建及简单操作
  13. 决策树常见的面试点整理
  14. 基于simulink的风力机房温度控制系统仿真
  15. Qt 测量函数运行耗时
  16. 【PCB设计】Mac系统Autodesk EAGLE PCB使用入门教程
  17. CSS控制Table内外边框、颜色、大小示例
  18. 『VulnHub系列』Hacker Fest: 2019-Walkthrough
  19. 微信小商店经验个人收集
  20. 用U盘给服务器做系统用在pe里分区吗,如何用U盘装系统并给硬盘分区

热门文章

  1. 宋代诗人潘阆 《酒泉子》
  2. 苹果开发者账号:忘记AppleID的安全提示问题怎么办?
  3. NFC 函数 handleRfDiscoveryEvent 解析
  4. 安卓图片自适应高度时图片长度过大的解决方案
  5. winPcap函数-pcap_open()
  6. android漫画项目管理,【漫画】什么是项目管理?
  7. 拉别人或者公司的Uni-app项目,在HBuilder运行小程序时打开了微信开发者工具,但微信开发者工具未运行项目
  8. python制作个人信息管理系统_python-员工信息管理系统
  9. 【IDEA 教程系列第 8 篇】idea 递进式选中代码
  10. CVE-2020-16838 Windows tcp/ip 远程代码执行漏洞复现