簡體   English   中英

使用 Python/BeautifulSoup 從 HTML 中提取與文本一致的鏈接

[英]Extract Links from HTML In Line with Text with Python/BeautifulSoup

關於如何使用 BeautifulSoup 將 HTML 轉換為文本有很多答案(例如https://stackoverflow.com/a/24618186/3946214

關於如何使用 BeautifulSoup 從 HTML 中提取鏈接也有很多答案。

我需要的是一種將 HTML 轉換為純文本版本的方法,但保留與鏈接附近文本內聯的鏈接。 例如,如果我有一些看起來像這樣的 HTML:

<div>Click <a href="www.google.com">Here</a> to receive a quote</div>

最好將其轉換為"Click Here (www.google.com) to receive a quote."

這里的用例是我需要將電子郵件的 HTML 轉換為純文本版本,如果鏈接在語義上位於 HTML 中,而不是在底部,那就太好了。 不需要這種確切的語法。 我很感激任何關於如何做到這一點的指導。 謝謝!

import html2text

data = """
<div>Click <a href="www.google.com">Here</a> to receive a quote</div>
"""


print(html2text.html2text(data))

輸出:

Click [Here](www.google.com) to receive a quote

如果你想要beautifulsoup解決方案,你可以從這個例子開始(它可能需要更多的真實世界數據調整):

data = '<div>Click <a href="www.google.com">Here</a> to receive a quote.</div>'

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, 'html.parser')

# append the text to the link
for a in soup.select('a[href]'):
    a.contents.append(soup.new_string(' ({})'.format(a['href'])))

# unwrap() all tags
for tag in soup.select('*'):
    tag.unwrap()

print(soup)

印刷:

Click Here (www.google.com) to receive a quote.

暫無
暫無

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

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