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.