python Beautifulsoup count元素,该元素没有内容

python Beautifulsoup count元素,该元素没有内容,python,beautifulsoup,Python,Beautifulsoup,如何计算没有内容的元素? 所说的元素没有内容,我的意思是 以下是我为实现目标而编写的代码: from bs4 import BeautifulSoup html_doc = """ <dl> <dt class="details-row-7">Overall</dt> <dd id="c0r11" class=" alternate details-row-7"> <div class="mobile-hea

如何计算没有内容的元素? 所说的元素没有内容,我的意思是

以下是我为实现目标而编写的代码:

from bs4 import BeautifulSoup

html_doc = """
<dl>
    <dt class="details-row-7">Overall</dt>
    <dd id="c0r11" class=" alternate details-row-7">
        <div class="mobile-headings">Overall</div>
        <div class="mobile-value">
            <div class="ca-rating-star" data-size="1"><i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star-empty icon-1x" style="color: #FF9900"></i>
            </div>
        </div>
    </dd>
</dl>
"""

soup = BeautifulSoup(html_doc)
ele = soup.find("dd", {"id": "c0r11"}, {"class": "alternate details-row-7"})
if ele.find(text=False):
    con_str = ele.find("div", {"class":"mobile-value"})
    if con_str.find(text=False):
        star_ele = con_str.find("div", {"class":"ca-rating-star"})
        if star_ele.find(text=False):
            star = star_ele.find_all("i", {"class":"icon-star icon-1x"})
            i = 0
            for s in star:
                if s.find(text=False):
                    i += 1
            print(i)
从bs4导入美化组
html_doc=“”
总体上
总体上
"""
汤=美汤(html\U文档)
ele=soup.find(“dd”,{“id”:“c0r11”},{“class”:“alternate details-row-7”})
如果元素查找(text=False):
con_str=ele.find(“div”,“class”:“mobile value”})
如果con_str.find(text=False):
star_ele=con_str.find(“div”,{“class”:“ca评级之星”})
如果星号元素查找(text=False):
star=star_ele.find_all(“i”,“class”:“icon-star-icon-1x”})
i=0
对于star中的s:
如果s.find(text=False):
i+=1
印刷品(一)

但是结果是0….

我在这里用要点回答了你的问题


问题是,当您说
s.find(text=False)
时,您正在查找
元素的子元素,而
标记没有子元素。您想查看
标记本身是否有空文本。因此,将
s.find(text=False)
替换为
s.get_text()

从bs4导入美化组
html_doc=“”
总体上
总体上
"""
汤=美汤(html\U文档)
ele=soup.find(“dd”,{“id”:“c0r11”},{“class”:“alternate details-row-7”})
如果元素查找(text=False):
con_str=ele.find(“div”,“class”:“mobile value”})
如果con_str.find(text=False):
star_ele=con_str.find(“div”,{“class”:“ca评级之星”})
如果星号元素查找(text=False):
star=star_ele.find_all(“i”,“class”:“icon-star-icon-1x”})
i=0
对于star中的s:
如果s.get_text()==“”:#在这一行上更改
i+=1
印刷品(一)
from bs4 import BeautifulSoup

html_doc = """
<dl>
    <dt class="details-row-7">Overall</dt>
    <dd id="c0r11" class=" alternate details-row-7">
        <div class="mobile-headings">Overall</div>
        <div class="mobile-value">
            <div class="ca-rating-star" data-size="1"><i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star icon-1x" style="color: #FF9900"></i>
                <i class="icon-star-empty icon-1x" style="color: #FF9900"></i>
            </div>
        </div>
    </dd>
</dl>
"""

soup = BeautifulSoup(html_doc)
ele = soup.find("dd", {"id": "c0r11"}, {"class": "alternate details-row-7"})
if ele.find(text=False):
    con_str = ele.find("div", {"class":"mobile-value"})
    if con_str.find(text=False):
        star_ele = con_str.find("div", {"class":"ca-rating-star"})
        if star_ele.find(text=False):
            star = star_ele.find_all("i", {"class":"icon-star icon-1x"})
            i = 0
            for s in star:
                if s.get_text() == "": # CHANGE ON THIS LINE
                    i += 1
            print(i)