1

Beautifulsoup でテキストを編集できることは知っていますが、href リンクを編集することはできますか? <a href="/foo/bar/">と言って、beautifulsoup を使用して に変更できるようにしたいと思い<a href="http://www.foobarinc.com/foo/bar/">ます。これを行うためにbeautifulsoupを使用する方法がわかりませんか?どんな助けでも大歓迎です。

4

2 に答える 2

6

あなたの他の質問のように: BeautifulSoup を使用すると、ドキュメントを表す階層的にネストされたオブジェクトのセットにコンテンツを解析し、それらのオブジェクトを変更してから別のテキストにシリアル化します。テキストを直接編集しているわけではありません。

マークアップのhref="..."部分は属性を表します。BeautifulSoup の各要素の属性にアクセスするには、el[name] item-style accessを使用します。したがって、ルート化された URL を属性の絶対 URL に変更するにa hrefは、次のように簡単です。

for link in soup.findAll('a'):
    if link['href'].startswith('/'):
        link['href']= 'http://www.foobarinc.com'+link['href']
于 2010-01-15T23:42:27.927 に答える
3

OP が bobince へのコメントで述べていることにもかかわらず、次のコードは問題なく動作します。

from BeautifulSoup import BeautifulSoup

ht = '''
  <a href="/foo/bar/">Hello world</a>
'''
soup = BeautifulSoup(ht)

for link in soup.findAll('a'):
    if link['href'].startswith('/'):
        link['href']= 'http://www.foobarinc.com'+link['href']
print soup

発する

<a href="http://www.foobarinc.com/foo/bar/">Hello world</a>

望んだ通りに。だから、漠然と主張するのではなく、

私はそれと同様のことを試みていましたが、[なし]が返され続けました。タグに一致する辞書のリストが見つかりません。これを試したところ、KeyError:href が返されました。

[none] returned(???)、奇妙なエラーと(???) が表示されるまで、OP は私が投稿したばかりのコードを変更して、自分のコードにどんどん近づけていく必要がありKeyError:hrefます。その時点で、最後に行われた変更それらが表示されると、OPが間違っていることを露骨に明らかにする必要があります-そうでない場合は、正確なデータとコードを投稿してください。私たちは助けることができるでしょう!-)

于 2010-01-16T03:02:29.203 に答える