簡體   English   中英

使用Python和Beautiful Soup如何捕獲空標簽

[英]Using Python and Beautiful Soup how can I capture an empty tag

我正在嘗試將網絡數據讀入列表。 問題是我需要考慮的數據中有空白點。

例如,對於下面的數據,我希望最終輸出為類似以下的列表:

德克薩斯州普萊諾
紐約,紐約
科羅拉多州丹佛
NA
伊利諾伊州芝加哥
加利福尼亞州舊金山

<span itemprop="addressLocality">Plano, TX</span>
<span itemprop="addressLocality">New York, NY</span>
<span itemprop="addressLocality">Denver, CO</span>
<span itemprop="addressLocality"></span>
<span itemprop="addressLocality">Chicago, IL</span>
<span itemprop="addressLocality">San Francisco, CA</span>

目前,我正在嘗試打印結果以進行驗證,然后再將其添加到列表中,我的代碼如下所示:

for span in div.find('span', {'itemprop':'addressLocality'}):
    if span:
        print(span)
    else:
        print('NA')

這段代碼為我提供了以下輸出,該輸出未考慮空標記:

德克薩斯州普萊諾
紐約,紐約
科羅拉多州丹佛
伊利諾伊州芝加哥
加利福尼亞州舊金山

我剛剛開始學習Python和Beautiful Soup。
我嘗試過if..else的變體; 嘗試:...除了: 和.contents。 我敢肯定這很簡單。
任何建議將不勝感激。

您應該使用find_all ,它返回找到的標記的所有實例。 find返回僅find的第一個。

if span:將評估為True 您想使用get_text獲取包含的文本,並檢查它是否非空。

嘗試這個:

cities = []

for span in div.findAll('span', {'itemprop': 'addressLocality'}):
    text = span.get_text()
    if len(span) > 0:
        cities.append(text)

print(cities)

嘗試使用find_all ,如果沒有文本,請用“ N / A”填充

spans = div.find_all('span', {'itemprop':'addressLocality'})
cities = [span.get_text() if span.get_text() else "N/A" for span in spans]
print cities

如果您想堅持使用原始代碼結構,則非常接近,但是請嘗試以下方法:

for span in div.find_all('span', {'itemprop':'addressLocality'}):
    if span.get_text():
        print(span.get_text())
    else:
        print('NA')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM