BeautifulSoup - изменение всех ссылок в куске HTML?

Мне нужно иметь возможность изменять каждую ссылку в документе HTML. Я знаю, что мне нужно использовать SoupStrainer, но я не на 100% уверен, как его реализовать. Если кто-то может направить меня на хороший ресурс или предоставить пример кода, он будет очень признателен.

Спасибо.

Ответы

Ответ 1

Может, что-то вроде этого сработает? (У меня нет переводчика Python передо мной, к сожалению)

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup('<p>Blah blah blah <a href="http://google.com">Google</a></p>')
for a in soup.findAll('a'):
  a['href'] = a['href'].replace("google", "mysite")

result = str(soup)

Ответ 2

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup('<p>Blah blah blah <a href="http://google.com">Google</a></p>')
for a in soup.findAll('a'):
    a['href'] = a['href'].replace("google", "mysite")
print str(soup)

Это решение Lusid, но поскольку у него не было интерпретатора Python перед ним, он не смог его протестировать, и у него было несколько ошибок. Я просто хотел опубликовать рабочее состояние. Спасибо Лусиду!

Ответ 3

Я пробовал это, и это сработало, проще избежать использования регулярного выражения для соответствия каждому 'href':

from bs4 import BeautifulSoup as bs
soup = bs(htmltext)
for a in soup.findAll('a'):
    a['href'] = "mysite"

Проверьте это, bs4 docs.