Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
300 views
in Technique[技术] by (71.8m points)

python - How to Beautiful Soup (bs4) match just one, and only one, css class

I am using following code to match all div that have CSS class "ad_item".

soup.find_all('div',class_="ad_item")

problem that I have is that, on that web page, there are also div that have CSS class set to "ad_ex_item" and "ad_ex_item".

<div class="ad_item ad_ex_item">

In documentation it is stated:

When you search for a tag that matches a certain CSS class, you’re matching against any of its CSS classes:

So how can I match div, that have only "ad_item", and do not have "ad_ex_item".

Or to put this in another way, how to search for div that have only CSS class "ad_item" ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I have found one solution, although it have nothing to do with BS4, it is pure python code.

for item in soup.find_all('div',class_="ad_item"):
     if len(item["class"]) != 1:
         continue;

It basically skip item, if there is more than one CSS class.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...