2016-08-01 11 views
0

、代わりにリンクになるための場所でそれを置き換えます:<a href="URL">Click Here</a>アンカー(<a href="URL">URL</a>)(<p>URL</p>)

元のファイルはデータベースダンプ(SQL、UTF-8)です。一部のURLは、すでに目的の形式で存在しています。不足しているリンクを修正する必要があります。

私はBeautifulsoupを使用するスクリプトを作成しています。他のソリューションがより理にかなっているならば(正規表現など)、私は提案に公開しています。

+0


あなたは、さらにあなたのリンクにテキストを追加したい場合は、.stringプロパティを設定します。 – Will

答えて

0

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) 
+0

Alexander、あなたの迅速な対応に感謝します。私はあなたの解決策をテストしました。それはかなりうまくいく。あなたが気にしないなら、もう少し簡単な質問。静的テキストでアンカーをどのように飾るのですか?空には見えませんか?たとえば、href = "http://google.com>ここをクリックして空のタグの代わりにを入力してください。 – bytebybyte

+0

@bytebybyte確かに、答えを更新しました。 – alecxe

関連する問題