Reputation: 55
when trying to select elements that have the attribute "data-server" it returns none here is the code
>>> psoup.select_one(".server > .serverslist")
<div class="serverslist " data-server="aHR0cDovL3d3dy5jbG91ZHkuZWMvZW1iZWQucGhwP2lkPWExYWU0NjkwZmZmYjQ=">cloudy</div>
>>> psoup.select_one(".server > .serverslist[data-server]")
>>>
Upvotes: 1
Views: 264
Reputation: 1121266
BeautifulSoup's CSS selectors are fairly limited. Attribute selectiors ([...]
) can only be combined with a tag selector, not with other selectors (like the class selector you used):
>>> 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
You'll have to find a different way of expressing your selector, one that doesn't look for attributes and classes at the same time.
Upvotes: 1