python beautifulsoup属性存在返回None

时间:2017-04-02 15:47:14

标签: python-3.x beautifulsoup

尝试选择具有属性" data-server"的元素时它没有返回 这是代码

>>> psoup.select_one(".server > .serverslist")
<div class="serverslist " data-server="aHR0cDovL3d3dy5jbG91ZHkuZWMvZW1iZWQucGhwP2lkPWExYWU0NjkwZmZmYjQ=">cloudy</div>
>>> psoup.select_one(".server > .serverslist[data-server]")
>>> 

1 个答案:

答案 0 :(得分:1)

BeautifulSoup的CSS选择器相当有限。属性选择器([...])只能与标签选择器组合,而不能与其他选择器(如您使用的类选择器)组合使用:

>>> from bs4 import BeautifulSoup
>>> psoup = BeautifulSoup(
...     '<div class="server"><div class="serverslist " data-server="aHR0cDovL3d3dy5jbG91ZHkuZWMvZW1iZWQucGhwP2lkPWExYWU0NjkwZmZmYjQ=">cloudy</div></div>',
...     'lxml')
>>> psoup.select_one("div[data-server]")
<div class="serverslist " data-server="aHR0cDovL3d3dy5jbG91ZHkuZWMvZW1iZWQucGhwP2lkPWExYWU0NjkwZmZmYjQ=">cloudy</div>
>>> psoup.select_one("[data-server]")
<div class="serverslist " data-server="aHR0cDovL3d3dy5jbG91ZHkuZWMvZW1iZWQucGhwP2lkPWExYWU0NjkwZmZmYjQ=">cloudy</div>
>>> psoup.select_one(".serverslist[data-server]") is None
True

您必须找到一种表达选择器的不同方式,一种不能同时查找属性和类的方法。