2013-09-29 39 views
4

我有一个脚本来替换“ahref”标记中的单词。不过,我想完全删除一个href,这样你就可以拥有没有链接的Google这个词。如何删除文本中的所有href标记

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的话并放置一个“”之前和之后他们。我不知道如何。我想这是在替换之前完成的。

+0

你可以留下无意义的''吗?你可以'删除'['href']'。 – Ryan

回答

6

使用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> 

UPDATE:

如果你想摆脱的<a>标签共有,您可以使用.replaceWithChildren()方法:

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 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> 
+0

谢谢,但谷歌我会看到一个链接或正常的文字。另外我怎样才能在谷歌或href任何单词之前放置一个空间。谢谢 – user2784753

4

您可以用漂白剂

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' 

here是漂白的文档。

相关问题