如何使用Beautiful Soup的节点选择器获取节点信息
HTML代码如下:
html = '''
<html>
<head>
<title>获取节点信息</title>
</head>
<body>
<div>
<ul>
<li class="item1" value1="1234" value2 = "hello world"><a href ="https://geekori.com">geekori.com</a></li>
<li class="item"><a href="href="https://www.jd.com">京东商城</a></li>
</ul>
<li class="item3"><a href="href="https://www.taobao.com">淘宝</a></li>
<li class="item"><a href="href="https://www.microsoft.com">微软</a></li>
<li class="item"><a href="href="https://www.google.com">谷歌</a></li>
</ul>
</div>
</body>
'''
- 安装beafutifulsoup4,现在都是python3版本,所以直接安装bs4
pip3 install beafutifulsoup4

-
在Pycharm中间导入,导入进工程才能正常引用
hexianling.png
- 导入beafutifulsoup4包文件,同时需要安装bs4
from bs4 import BeautifulSoup
如果遇到以下error信息

解决方法:
- 安装好lxml,这个容量大概3.7M,可能需要一点时间。如果失败可以尝试多几次
pip3 install lxml


查看节点信息
soup = BeautifulSoup(html,'lxml')
print(soup.title.name) #获取title的节点名字
print(soup.title.text) # 获取title name

获取第一个li的属性值
- 由于获取attrs的时候,都是按照顺序取值的,从一个开始取值
print(soup.li.attrs)

获取某个特定属性值
- 获取value2这个的属性值
print(soup.li.attrs['value2'])

获取链接的属性值
print(soup.a['href'])
print(soup.a.string)
print(soup.a.text)

讲解
1.节点选择器可以想使用对象属性一样获取节点信息,如soup.title.name用于获取title节点的名字。
如何使用CSS选择器获取节点信息
HTML代码
html = '''
<html>
<head>
<title>获取节点信息</title>
</head>
<body>
<div>
<ul>
<li class="item1" value1="1234" value2 = "hello world"><a href ="https://geekori.com">geekori.com</a></li>
<li class="item"><a href="href="https://www.jd.com">京东商城</a></li>
</ul>
<li id = "myTest" class="item3"><a href="href="https://www.taobao.com">淘宝</a></li>
<li class="item"><a href="href="https://www.microsoft.com">微软</a></li>
<li class="item"><a href="href="https://www.google.com">谷歌</a></li>
</ul>
</div>
</body>
'''
使用CSS选择器
soup = BeautifulSoup(html,'lxml')
tags = soup.select('.item') #.select 就是选择 CSS选择器的方法
print(type(tags))
获取所有的CSS节点信息
soup = BeautifulSoup(html,'lxml')
tags = soup.select('.item')
print(type(tags))
for tag in tags:
print(tag)

获取特定属性值的节点
- 获取id = myTest的节点信息
- 获取节点的方法是使用#
print('-'*10)
print(soup.select('#myTest'))

获取出所有相关节点信息,比如所有link
print('-'*10)
print(soup.select('a'))

获取所有相关节点中的特定值
- 找到所有的link
- 获取所有link下面的href值
Links = soup.select('a')
for link in Links:
print(link)
print(link['href'])

记录
- CSS选择器可以获取所有的相关节点信息
- 节点选择值只能获取满足条件的节点信息
网友评论