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