BeautifulSoup - модифицировать все ссылки в куске HTML? - PullRequest
18 голосов
/ 20 января 2009

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

Спасибо.

Ответы [ 3 ]

38 голосов
/ 20 января 2009

Может быть, что-то подобное будет работать? (К сожалению, передо мной нет переводчика 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)
28 голосов
/ 20 января 2009
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)

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

5 голосов
/ 22 марта 2014

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

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

Проверьте это на bs4 документах .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...