Week 2 Unit 2 BeautifulSoup 的 find_all 方法

1 信息标记的形式

1.1 XML

以标签的形式(类似于HTML)。

<!-- <标签(Tag)>                  标签间字符串  <标签> -->
<img src="china.jpg" size="10"> … </img>
<!-- <标签名称(name) 属性(Attribute)>               -->
<name />  <!-- 没有标签间字符串的时候可以简写 -->

1.2 JSON

以键值对的形式。

"key":"value"
"key":["value1","value2"]
"key": {"subkey":"subvalue"}

1.3 YAML

无类型键值对的形式。

#注释
key : value
key : 
‐value1
‐value2
key :
    subkey : subvalue

2 BeautifulSoup库的HTML内容查找方法

#准备好经过Bs4库处理的内容
import requests
from bs4 import BeautifulSoup #从bs4库中引入BeautifulSoup类
r = requests.get('http://python123.io/ws/demo.html')
demo = r.text
soup = BeautifulSoup(demo,'html.parser')

find_all() 方法后有四个参数:(name, attrs, recursive, string, **kwargs),其中:

name:对标签名称的检索字符串
attrs:对标签属性值的检索字符串,可标注属性检索
recursive:是否对子孙全部检索,默认True
string:字符串区域检索字符串

一些例子:

soup.find_all('a')#返回列表,包含所有a标签
soup.find_all(['a','b'])#列表,包含所有ab
soup.find_all('p','course')#带有course属性值的所有p标签
soup.find_all(id='link1')#属性中查找id=1的所有标签
#只能精确查找,如果要部分查找,需要正则表达式库
import re
soup.find_all(id=re.compile('link'))#以link开头
#简写形式
soup('a') #等价于
soup.find_all('a')
No Thoughts on Week 2 Unit 2 BeautifulSoup 的 find_all 方法

我想留言