簡體   English   中英

如何從特定 HTML 標簽內的相同 html 標簽中獲取一行中的整個文本?

[英]How to get the whole text in one line from the same html tags inside a specific HTML tag?

我有一個很長的 HTML 文件,看起來像:

<div><nobr>
<span>ABC</span>
<span>DEF</span>
<span>GHI</span>
</nobr></div>

<div><nobr>
<span>100</span>
</nobr></div>

<div><nobr>
<span>JKL</span>
<span>MNO</span>
<span>PQR</span>
</nobr></div>

<div><nobr>
<span>101</span>
</div></nobr>'

這是我嘗試過的:

soup = BeautifulSoup(html_code, 'lxml')
nobr_tags = soup.select('nobr')

如何使用 BeautifulSoup在一行中的nobr HTML 標簽獲取span標簽內的整個文本?

我想得到的是:

ABCDEFGHI, 100, JKLMNOPQR, 101, ... 

但我得到的是:

ABC, DEF, GHI, 100, JKL, MNO, PQR, 101, ...

一些<nobr>標簽在<nobr>標簽內有 2、3 或 4 個<span> <nobr>標簽。
無論 nobr 標簽中有多少個 span 標簽,我都希望將<nobr>標簽內的所有文本放在一行中。

您可以使用生成器表達式來join()帶有,的標簽。

from bs4 import BeautifulSoup

html_doc = """
<div>
   <nobr>
      <span>ABC</span>
      <span>DEF</span>
      <span>GHI</span>
   </nobr>
</div>
<div>
   <nobr>
      <span>100</span>
   </nobr>
</div>
<div>
   <nobr>
      <span>JKL</span>
      <span>MNO</span>
      <span>PQR</span>
   </nobr>
</div>
<div>
   <nobr>
      <span>101</span>
</div>
</nobr>
"""

soup = BeautifulSoup(html_doc, "lxml")

print(
    ", ".join(x.get_text(strip=True) for x in soup.select("nobr"))
)

輸出:

ABCDEFGHI, 100, JKLMNOPQR, 101

暫無
暫無

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

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