作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从找到的所有图像中删除“a”标签(链接)。因此,为了提高性能,我在 html 中列出了所有图像,并寻找包装标签并简单地删除链接。
我正在使用 BeautifulSoup,不确定我做错了什么,它不是删除 a 标签,而是删除内部内容。
这就是我所做的
from bs4 import BeautifulSoup
html = '''<div> <a href="http://somelink"><img src="http://imgsrc.jpg" /></a> <a href="http://somelink2"><img src="http://imgsrc2.jpg /></a>" '''
soup = BeautifulSoup(html)
for img in soup.find_all('img'):
print 'THIS IS THE BEGINING /////////////// '
#print img.find_parent('a').unwrap()
print img.parent.unwrap()
这给了我以下输出
> >> print img.parent()
<a href="http://somelink"><img src="http://imgsrc.jpg" /></a>
<a href="http://somelink2"><img src="http://imgsrc2.jpg /></a>
> >> print img.parent.unwrap()
<a href="http://somelink"></a>
<a href="http://somelink2"></a>
我已经尝试过replaceWith
和replaceWithChildren
但当我使用 object.parent
时不起作用或findParent
我不知道我做错了什么。距离我开始使用 Python 才几周时间。
最佳答案
unwrap()
函数返回已删除的标签。树本身已被适当修改。引用自 unwrap()
documentation :
Like
replace_with()
,unwrap()
returns the tag that was replaced.
换句话说:它工作正常!打印 img
的新父级而不是 unwrap()
的返回值看到 <a>
标签确实已被删除:
>>> from bs4 import BeautifulSoup
>>> html = '''<div> <a href="http://somelink"><img src="http://imgsrc.jpg" /></a> <a href="http://somelink2"><img src="http://imgsrc2.jpg /></a>" '''
>>> soup = BeautifulSoup(html)
>>> for img in soup.find_all('img'):
... img.parent.unwrap()
... print img.parent
...
<a href="http://somelink"></a>
<div> <img src="http://imgsrc.jpg"/> <a href="http://somelink2"><img src="http://imgsrc2.jpg /></a>"/></a></div>
<a href="http://somelink2"></a>
<div> <img src="http://imgsrc.jpg"/> <img src="http://imgsrc2.jpg /></a>"/></div>
这里 python 回显 img.parent.unwrap()
返回值,后跟 print
的输出显示 <img>
的父级的语句标签现在是 <div>
标签。第一个打印显示其他 <img>
标签仍然包裹着,第二个打印显示它们都是 <div>
的直接子代。标签。
关于python - 从图像中解开 "a"标签,而不丢失内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18163139/
我是一名优秀的程序员,十分优秀!