[英]Extracting text outside of a <div> tag BeautifulSoup
所以我練習刮刮,我遇到了這樣的事情:
<div class="profileDetail">
<div class="profileLabel">Mobile : </div>
021 427 399
</div>
我需要<div>
標簽之外的數字:
我的代碼是:
num = soup.find("div",{"class":"profileLabel"}).text
但是它的輸出是Mobile :
只有它是<div>
標簽內的文本而不是它之外的文本。
那么我們如何在<div>
標簽之外提取文本?
我會創建一個可重用的函數來通過標簽獲取值,通過text
查找標簽並獲取下一個兄弟 :
import re
def find_by_label(soup, label):
return soup.find("div", text=re.compile(label)).next_sibling
用法:
find_by_label(soup, "Mobile").strip() # prints "021 427 399"
嘗試使用soup.find("div",{"class":"profileLabel"}).next_sibling
,這將獲取下一個元素,可以是bs4.Tag
或bs4.NavigableString
。
bs4.NavigableString
是你在這種情況下嘗試獲得的。
elem = soup.find("div",{"class":"profileLabel"}).next_sibling
print type(elem)
# Should return
bs4.element.NavigableString
In [4]: s = bs4.BeautifulSoup('<div> Hello </div>HiThere<p>next_items</p>', 'html5lib')
In [5]: s
Out[5]: <html><head></head><body><div> Hello </div>HiThere<p>next_items</p></body></html>
In [6]: s.div
Out[6]: <div> Hello </div>
In [7]: s.div.next_sibling
Out[7]: u'HiThere'
In [8]: type(s.div.next_sibling)
Out[8]: bs4.element.NavigableString
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.