1.使用lxml解析器,初始化Beautiul Soup时,把第二个参数改成lxml即可
from bs4 import BeautifulSoup soup=BeautifulSoup('<p>hello</p>','lxml') print(soup.p.string)
2.节点选择器
直接调用节点的名称就可以选择节点玄素,在调用string属性就可以得到节点内的文本了。当有多个节点时,这种方式只会选择第一个匹配的节点,其他的后边节点都会忽略。
返回的结果都是bs4.element.Tag类型
3.关联选择
选取节点元素之后,如果想要获取它的直接子节点,可以调用contents属性。
同样,我们可以调用children属性得到相应的结果,得到的是一个生成器,用for循环遍历即可
如果想要得到所有的子孙节点,可以调用descendants属性。
如果想要获取某个节点元素的父节点,可以调用parent属性
兄弟节点
next_sibling 和previous_sibling 分别获取节点的下一个和上一个兄弟元素,返回是所有的,是一个生成器
3.方法选择器
soup.find_all(name='ul')返回的是html中文本的所有ul的列表
for ul in soup.find_all(name='ul'): print(ul.find_all(name='li'))返回ul中的li的列表
attrs
print
(
soup
.
find_all
(
attrs
=
{
'id'
:
'list-1'
}
)
)
print
(
soup
.
find_all
(
attrs
=
{
'name'
:
'elements'
}
)
)
返回的是列表,小知识,如果是class属性,class_ 因为class在Python中是一个关键字
4.css选择器
select