簡體   English   中英

提取<div>標簽BeautifulSoup之外的文本

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

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