7

我有一个脚本来替换“ahref”标签中的一个单词。但是,我想完全删除 a href,这样您就可以在没有链接的情况下使用 Google 一词。

from BeautifulSoup import BeautifulSoup

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

你也可以找到所有放在href中的单词并在它们之前和之后放置一个“”。我不知道该怎么做。我想这是在更换之前完成的。

4

2 回答 2

13

改为使用del a['href'],就像在普通字典上一样:

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup('<p>Hello <a href="http://google.com">Google</a></p>')
for a in soup.findAll('a'):
    del a['href']

给你:

>>> print str(soup)
<p>Hello <a>Google</a></p>

更新:

如果要完全摆脱<a>标签,可以使用以下.replaceWithChildren()方法:

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup('<p>Hello <a href="http://google.com">Google</a></p>')
for a in soup.findAll('a'):
    a.replaceWithChildren()

给你:

>>> print str(soup)
<p>Hello Google</p>

...并且,您在评论中要求的内容(用空格包装标签的文本内容)可以通过以下方式实现:

from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup('<p>Hello <a href="http://google.com">Google</a></p>')
for a in soup.findAll('a'):
    del a['href']
    a.setString(' %s ' % a.text)

给你:

>>> print str(soup)
<p>Hello <a> Google </a></p>
于 2013-09-29T17:23:30.823 回答
7

你可以用漂白剂

pip install bleach

然后像这样使用它...

import bleach
from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup('<a href = "somesite.com">hello world</a>')
clean = bleach.clean(soup,tags[],strip=True)

这导致...

>>> print clean
u'hello world'

是漂白剂的文档。

于 2013-09-29T18:24:08.817 回答