p
のすべての要素が、http
で始まるテキストで検索できます。その後、replace it withリンク:
for elm in soup.find_all("p", text=lambda text: text and text.startswith("http")):
elm.replace_with(soup.new_tag("a", href=elm.get_text()))
例取り組んコード:
from bs4 import BeautifulSoup
data = """
<div>
<p>http://google.com</p>
<p>https://stackoverflow.com</p>
</div>
"""
soup = BeautifulSoup(data, "html.parser")
for elm in soup.find_all("p", text=lambda text: text and text.startswith("http")):
elm.replace_with(soup.new_tag("a", href=elm.get_text()))
print(soup.prettify())
プリント:
<div>
<a href="http://google.com"></a>
<a href="https://stackoverflow.com"></a>
</div>
私は、このアプローチの休憩を想像することができますが、それはあなたのために良いスタートでなければなりません。あなたが持っているすべての問題に注意し、あなたはすでにやったのいくつかの例を提供してください
soup = BeautifulSoup(data, "html.parser")
for elm in soup.find_all("p", text=lambda text: text and text.startswith("http")):
a = soup.new_tag("a", href=elm.get_text())
a.string = "link"
elm.replace_with(a)
:
あなたは、さらにあなたのリンクにテキストを追加したい場合は、
.string
プロパティを設定します。 – Will