ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-用漂亮的汤添加父标签

2019-10-11 23:58:47  阅读:199  来源: 互联网

标签:python beautifulsoup html-parsing


我有许多HTML页面,这些页面的各个部分包含以下代码片段:

<div class="footnote" id="footnote-1">
<h3>Reference:</h3>
<table cellpadding="0" cellspacing="0" class="floater" style="margin-bottom:0;" width="100%">
<tr>
<td valign="top" width="20px">
<a href="javascript:void(0);" onclick='javascript:toggleFootnote("footnote-1");' title="click to hide this reference">1.</a>
</td>
<td>
<p> blah </p>
</td>
</tr>
</table>
</div>

我可以成功解析HTML并提取这些相关标签

tags = soup.find_all(attrs={"footnote"})

现在,我需要添加有关这些标签的新的父标签,这样代码片段就可以了:

<div class="footnote-out"><CODE></div>

但是我找不到在bs4中添加父标签以使它们支撑已标识标签的方法. insert()/ insert_before在标识的标签之后添加.

我首先尝试字符串操作:

for tags in soup.find_all(attrs={"footnote"}):
      tags = BeautifulSoup("""<div class="footnote-out">"""+str(tags)+("</div>"))

但是我认为这不是最好的方法.

谢谢你的帮助.刚开始使用bs / bs4,但似乎无法破解.

解决方法:

这个怎么样:

def wrap(to_wrap, wrap_in):
    contents = to_wrap.replace_with(wrap_in)
    wrap_in.append(contents)

简单的例子:

from bs4 import BeautifulSoup
soup = BeautifulSoup("<body><a>Some text</a></body>")
wrap(soup.a, soup.new_tag("b"))
print soup.body
# <body><b><a>Some text</a></b></body>

文档示例:

for footnote in soup.find_all("div", "footnote"):
    new_tag = soup.new_tag("div")
    new_tag['class'] = 'footnote-out'
    wrap(footnote, new_tag)

标签:python,beautifulsoup,html-parsing
来源: https://codeday.me/bug/20191011/1896305.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有