21 BeautifulSoup类的find_all()方法的name属性的用法
文章目录
21 BeautifulSoup类的find_all()方法的name属性的用法
1. BeautifulSoup类的方法选择器的概括
2. find_all()方法的作用及范围
3. find_all()方法的语法格式
4. find_all方法的name参数
4.1. name参数=标签名=字符串
4.2. name=正则表达式='^b'
`^`符合的输入方法
代码演示
正则表达式和for循环的综合运用
4.3. 列表
4.4. True
name= True和for循环的综合运用
5. 总结
1. BeautifulSoup类的方法选择器的概括
前面我们学习了BeautifulSoup类的节点选择器和CSS选择器两种方法来提取html代码中的数据。
这两种选择方法都是通过标签或属性来进行选择。
这两种选择方法的优点是快。
缺点是在复杂的html代码中,这两种选择方法都无法精准定位到具体的元素。
【例如】
<a href="http://example.com/python" class="sister" id="link1"><span>python学习网</span></a>
<a href="http://example.com/java" class="sister" id="link2"><span>java学习网</span></a>
<a href="http://example.com/html" class="sister" id="link3"><span>html学习网</span></a>
1
2
3
上述代码中出现了3个a标签。
通过标签或属性我们无法精准定位到第2个或第3个a标签。
如果我们要提取第2个或第3个a标签里的内容我们可以利用BeautifulSoup类中的find_all或find方法,通过向方法传入参数的方式来进行精准定位。
BeautifulSoup类提供的方法选择器中有许许多多的方法,如下图所示:
【温馨提示】
前面第1个符合条件的兄弟节点和前面第1个符合条件的节点是有区别的。
前1个兄弟节点和前1个节点有时候可能是同一个节点。
上图中,我们可以看到总共有12种选择方法。
这12种选择方法他们的用法都是一样的,只不过提取数据的范围会不同。
这里我们重点学习find_all及find方法。
我们将这两个方法学会以后,其它方法在你需要的时候直接去调用就行。
他们参数的位置以及参数的方法都和find_all及find方法都是一样的。
2. find_all()方法的作用及范围
find_all:查找全部。
【作用】搜索当前节点下所有符合条件的节点。
【范围】当前节点下的所有节点。如果没有指定当前节点,则进行全文检索。
【温馨提示】
使用find_all方法通常需要指定当前节点。
3. find_all()方法的语法格式
find_all (name, attrs, recursive, text, **kwargs)
find_all()方法有5个参数:
参数1.name
参数2.attrs
参数3.recursive
参数4.text
参数5.**kwargs
4. find_all方法的name参数
name参数的作用:查找所有名字为name的标签。
例如:name=‘span’
将标签名span作为参数传入find_all方法中,BeautifulSoup会查找与标签名span完全匹配的内容。
name参数一共有4种形式:
1.字符串
2.正则表达式
3.列表
4.True
4.1. name参数=标签名=字符串
当name参数传入的是字符串类型即标签名称的时候,BeautifulSoup会查找与标签名完全匹配的内容。
# 声明一个字符串变量存储HTML代码
html_str = """
<html>
<head>
<title>学习网址</title>
</head>
<body>
<p class="story">
这里有3个网址,他们分别是:
<a href="http://example.com/python" class="sister" id="link1"><span>python学习网</span></a>
<a href="http://example.com/java" class="sister" id="link2"><span>java学习网</span></a>
<a href="http://example.com/html" class="sister" id="link3"><span>html学习网</span></a>
</p>
<p>
<li class="element">本是青灯不归客</li>
<li class="element">却因浊酒留风尘</li>
<li class="element">终是庄周梦了蝶</li>
<li class="element">你是恩赐也是劫</li>
</p>
</body>
</html>