[英]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.