Можно ли изменить значение ссылки с Beautifulsoup, не создавая заново всю ссылку? - PullRequest
2 голосов
/ 25 мая 2010

Начиная с ввода HTML, как это:

<p>
<a href="http://www.foo.com" rel="nofollow">this is foo</a>
<a href="http://www.bar.com" rel="nofollow">this is bar</a>
</p>

возможно ли изменить значения узла <a> ("this i foo" и "this is bar"), добавив к значению суффикс "PARSED", не создавая заново всю ссылку? Результат должен быть таким:

<p>
<a href="http://www.foo.com" rel="nofollow">this is foo_PARSED</a>
<a href="http://www.bar.com" rel="nofollow">this is bar_PARSED</a>
</p>

И код должен быть примерно таким:

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
for link_tag in soup.findAll('a'):
    link_tag.string = link_tag.string + '_PARSED' #This obviously does not work

1 Ответ

3 голосов
/ 25 мая 2010

Если я вас правильно понимаю, то вы почти у цели. Измените свой код на

for link_tag in soup.findAll('a'):
    link_tag.string = link_tag.string + '_PARSED'
html_out = soup.renderContents()

Если мы распечатаем html_out, мы получим:

>>> print html_out
<p>
<a href="http://www.foo.com" rel="nofollow">this is foo_PARSED</a>
<a href="http://www.bar.com" rel="nofollow">this is bar_PARSED</a>
</p>

что я думаю, это то, что вы хотели.

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