Python

Python基础(47) - Beautiful Soup节点选

2020-03-17  本文已影响0人  xianling_he

如何使用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>
'''
pip3 install beafutifulsoup4
hexianling.png
from bs4 import BeautifulSoup

如果遇到以下error信息

hexianling.png

解决方法:

pip3 install lxml
hexianling.png hexianling.png

查看节点信息

soup = BeautifulSoup(html,'lxml')
print(soup.title.name) #获取title的节点名字
print(soup.title.text) # 获取title name
hexianling.png

获取第一个li的属性值

print(soup.li.attrs)
hexianling.png

获取某个特定属性值

print(soup.li.attrs['value2'])
hexianling.png

获取链接的属性值

print(soup.a['href'])
print(soup.a.string)
print(soup.a.text)
hexianling.png

讲解

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)
hexianling.png

获取特定属性值的节点

print('-'*10)
print(soup.select('#myTest'))
hexianling.png

获取出所有相关节点信息,比如所有link

print('-'*10)
print(soup.select('a'))
hexianling.png

获取所有相关节点中的特定值

Links = soup.select('a')
for link in Links:
    print(link)
    print(link['href'])
hexianling.png

记录

  1. CSS选择器可以获取所有的相关节点信息
  2. 节点选择值只能获取满足条件的节点信息
上一篇 下一篇

猜你喜欢

热点阅读