python parse页面类名选择错误

时间:2017-04-19 10:54:39

标签: python

使用beautifulsoup写一个python程序来解析一个html页面:

 soup_content = BeautifulSoup(u_f_page, "html.parser")


 if soup_content.find("li", attrs={"class": "_698"}) == None:
        u_f_name = ""
        u_f_c_unit = ""
 else:
        for u_f_c_li in soup_content.find_all("li",attrs={"class":"_698"}):
            print(u_f_c_li)

当我检查打印结果(u_f_c_li)时,我找到了所有的

<li class="_698">
 ...
 ...
</li>

已获得并成功打印,但是,我发现此页面中的其他内容也已获取并打印出来,请参阅:

<li class="followListItem _1fic _698">
...
...
...
</li>

我只需要

<li class="_698">...</li>

内容,我不需要

<li class="followListItem _1fic _698">....</li> 

内容,我想这句话中有错误:

for u_f_c_li in soup_content.find_all("li",attrs={"class":"_698"}):

因为

<li class="followListItem _1fic _698">  

还包括&#34; _698&#34;在类名中,所以也可以获取它的内容,但是我不需要它的内容,如何获取class =&#34; _698&#34;,而不是获取class =&#34; followListItem _1fic _698&#34; < / p>

你能帮我解决一下吗

1 个答案:

答案 0 :(得分:0)

这段代码有点乱,但它会给你想要的结果。

soup_content = BeautifulSoup(html, "html.parser")

if soup_content.find("li", attrs={"class": "_698"}) is None :
    u_f_name = ""
    u_f_c_unit = ""
else : 
    li_list = [ li for li in soup_content.find_all("li", {"class":"_698"}) if all(x == '_698' for x in li.get('class')) ]
    for u_f_c_li in li_list :
        print(u_f_c_li)