美丽的汤 - 去除外部标签

2024-03-16

我有一个 HTML 文档,其中包含一堆<div>的,带着孩子<p>的和里面<href>的。目标是这样的,

  1. 去除<div> and <p> tags
  2. 在每个删除的末尾<div> add a </br>

Example

这样:

<div> 
  <p>
    <a href="" id="tnt1">[1]</a>"RFC 4456 - BGP Route Reflection: An Alternative to Full ... - IETF Tools.">ref="https://example.com">https://https://example.com"</a></span><span>. Accessed 15 Nov. 2017.
  </p>
</div>

就变成这样了:

<a href="" id="tnt1">[1]</a>"RFC 4456 - BGP Route Reflection: An Alternative to Full ... - IETF Tools.">ref="https://example.com">https://https://example.com"</a></span><span>. Accessed 15 Nov. 2017.
</br>

Current

到目前为止我的代码是:

from bs4 import BeautifulSoup

for div in soup.find_all(name=re.compile(r'div')):
    print div

然而,所有示例似乎都指向替换内部文本而不是实际标签。另外,如果有办法在 bs3 中做到这一点,那将是理想的,因为我所有其他代码当前都使用 v3。

有人能指出我正确的方向吗?谢谢,


''.join(str(x) for x in div.p.contents)给我内部 HTML 作为 bs4 上的字符串

I get parent = div.parent稍后使用它

Using div.extract()我删除div与所有子标签。

Using parent.append()我把内部 HTML 放回去了。

from bs4 import BeautifulSoup

data = '''<strong>
<div> 
  <p>
    <a href="" id="tnt1">[1]</a>"RFC 4456 - BGP Route Reflection: An Alternative to Full ... - IETF Tools.">ref="https://example.com">https://https://example.com"</a></span><span>. Accessed 15 Nov. 2017.
  </p>
</div>
</strong>'''

soup = BeautifulSoup(data, 'html.parser')

for div in soup.find_all('div'):
    parent = div.parent

    inner = ''.join(str(x) for x in div.p.contents) + "<br/>"
    print('--- inner ---')
    print(inner)

    # remove div with all subtags
    div.extract()

    parent.append(BeautifulSoup(inner, 'html.parser'))
    print('--- after ---')
    print(parent)

Result:

--- inner ---

<a href="" id="tnt1">[1]</a>"RFC 4456 - BGP Route Reflection: An Alternative to Full ... - IETF Tools.">ref="https://example.com">https://https://example.com"<br/>
--- after ---
<strong>

<a href="" id="tnt1">[1]</a>"RFC 4456 - BGP Route Reflection: An Alternative to Full ... - IETF Tools."&gt;ref="https://example.com"&gt;https://https://example.com"<br/></strong>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

美丽的汤 - 去除外部标签 的相关文章

  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • 使用 Tkinter 打开网页

    因此 我的应用程序需要能够打开其中的单个网页 并且它必须来自互联网并且未保存 特别是我想使用 Tkinter GUI 工具包 因为它是我最熟悉的工具包 最重要的是 我希望能够在窗口中生成事件 例如单击鼠标 但无需实际使用鼠标 有什么好的方法
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 为什么需要设置WORKON_HOME环境变量?

    我已经有一段时间没有使用 python 虚拟环境了 但我也安装了虚拟环境包装器 我的问题是 在文档页面中它说要这样做 export WORKON HOME Envs mkdir p WORKON HOME source usr local
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • 在 django 中导入设置时出现奇怪的错误

    我有很多项目在 ubuntu 中使用 python2 7 和 virtualenv virtualenvwrapper 工作 在我的工作中 一些开发人员使用 macosx 和 windows 通常我像往常一样创建项目 django admi
  • Python在没有pandas的情况下解码excel表

    我正在尝试在 python 中读取 excel 文件而不使用pandas or xlrd 我一直在尝试将结果转换为bytes to utf 8没有任何成功 xls 文件中的数据 colA colB colC spc 1D0 20190705
  • Python脚本从字母和两个字母组合生成单词

    我正在编写一个简短的脚本 它允许我使用我设置的参数生成所有可能的字母组合 例如 b a 参数 单词 5 个字母 第三 第五个字母 b a 第一个字母 ph sd nn mm 或 gh 第二 第四个字母 任意元音 aeiouy 和 rc 换句
  • AttributeError: 'super' 对象没有属性 '__getattr__' 在 Kivy 中使用带有多个 kv 文件的 BoxLayout 时出错

    我很清楚 这个问题已经被问过好几次了 但尝试以下解决方案后 Python Kivy AttributeError 尝试获取 self ids 时 super 对象没有属性 getattr https stackoverflow com qu
  • 根据标点符号列表替换数据框中的标点符号[重复]

    这个问题在这里已经有答案了 使用 Canopy 和 Pandas 我有数据框 a 其定义如下 a pd read csv text txt df pd DataFrame a df columns test test txt 是一个单列文件
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • 如何有效地比较 pandas DataFrame 中的行?

    我有一个 pandas 数据框 其中包含雷击记录以及时间戳和全球位置 格式如下 Index Date Time Lat Lon Good fix 0 1 20160101 00 00 00 9962692 7 1961 60 7604 1
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • ProcessPoolExecutor 传递多个参数

    ESPN播放器免费 class ESPNPlayerFree def init self player id match id match id team 团队名单1 277906 cA2i150s81HI3qbq1fzi za1Oq5CG
  • Chrome 驱动程序和 Chromium 二进制文件无法在 aws lambda 上运行

    我陷入了一个问题 我需要在 AWS lambda 上做一些抓取工作 所以我按照下面提到的博客及其代码库作为起点 这非常有帮助 并且在运行时环境 Python 3 6 的 AWS lambda 上对我来说工作得很好 https manivan
  • PyObjC + Python 3.0 问题

    默认情况下 Cocoa Python 应用程序使用默认的 Python 运行时版本 2 5 如何配置我的 Xcode 项目以便它使用较新的 Python 3 0 运行时 我尝试用新版本替换项目中包含的Python framework 但它不

随机推荐

  • Android USB 配件多线程

    我遇到了由多线程和 Android Open Accessory 引起的问题 我需要与 USB 附件通信 但我需要从 2 个线程进行通信 一个线程生成并发送数据 另一个线程读取数据 为什么我不使用单线程 因为在读取之前可能有 1 次或多次写
  • 使用 Rust 从不同偏移量的文件中读取

    我正在开发一个项目 该项目涉及从不同偏移量的文件中读取不同的信息 目前 我正在使用以下代码 SECTORS PER CLUSTER starts at 13 opened file seek SeekFrom Start 13 unwrap
  • 如果在 javascript 中返回,如何抓取搜索结果(使用 python)

    我想要抓取的网站使用 JavaScript 填充返回 我可以简单地以某种方式调用脚本并处理其结果吗 当然 没有分页 我不想运行整个过程来抓取生成的格式化 HTML 但原始源是空白的 看一看 回报的来源很简单
  • 问:在 rmarkdown html 中的 for 循环中创建传单地图

    我正在尝试在 rmarkdown 文件中创建带有 for 循环的传单地图 这是一个最小的例子 title Test output html document r quakes echo F data quakes library leafl
  • AMP Html 无法在 iphone safari 浏览器上运行以进入新窗口

    最近 我正在使用 Accelerated Mobile Pages AMP 开发渐进式 Web 应用程序 我必须添加锚链接target blank 以便用户单击该链接将被重定向到带有锚点位置的新窗口 a href External Url
  • Angular.js ng-style 不会绑定值

    我在 angularjs 上遇到了问题 即使经过研究 我也找不到错在哪里 我需要重新计算元素的 css 值 left 我正在使用 ng style 指令和一个将返回具有 css 值的对象的方法 这就是 据我所知 我必须做的 但是当我更新值时
  • 项目骑手 - 构建时查看 msbuild 输出

    当我尝试构建解决方案时 我想查看 msbuild 日志 它最初是 Visual Studio 2015 的解决方案 Rider 的输出构建窗口 视图 gt 工具窗口 gt 构建 显示 Microsoft R 构建引擎版本 14 0 2542
  • 使用 git rebase 时自动跳过空提交

    通常 你必须做git rebase skip 如果有一个开关可以自动跳过这些空提交 那就太好了 有人知道怎么做吗 非常古老的话题 但对我来说是搜索引擎上的第一个结果 我终于发现有一个 empty参数可以采用以下值之一 keep drop 和
  • Android 词典应用程序

    我想在字典之上开发一个应用程序 即使用字典作为其一部分的应用程序 市场上有用于此目的的任何字典应用程序吗 遵循 GPL 的应用程序是更好的 还有那些使用本地数据库的应用程序而不是使用网络连接是更好的选择 如果没有 市场上是否有可用的词典数据
  • 使用 Android Studio 将 iTextG 包含在 Android 项目中

    在 Android Studio 中包含 iTextG 时出现以下错误 com android dex DexException Multiple dex files define Lcom itextpdf awt geom Affine
  • GAE/P:API 调用的交易安全

    假设您使用交易来处理 Stripe 付款并更新用户实体 ndb transactional def process payment user key amount user user key get user stripe payment
  • Python:捕获任何异常并将其放入变量中

    为了弄清楚如何避免一些递归 我需要捕获任何异常 编辑 不仅仅是从 Exception 派生的异常 而是所有异常 包括 KeyboardInterrupt 和用户异常 将其放入变量中 然后重新引发它位于 catch 块之外 本质上 我正在尝试
  • 如何使用 mixpanel API?

    我无法连接到 mixpanel 我尝试过使用正确的 api key 和 api secret 如下所示
  • 调度程序 Invoke(...) 与 BeginInvoke(...) 混淆

    我很困惑为什么我不能在 Count 方法中的 Dispatcher 上使用 BeginInvoke 来使此测试计数器应用程序与 2 个 或更多 同时运行的 countertextbox 一起使用 您可以通过将 BeginInvoke 替换为
  • 查找 CMake 的包 Eigen3

    CMake 找不到我的Eigen3包裹 我设置了一个名为的环境变量 EIGEN3 INCLUDE DIR 指向路径所在的位置FindEigen3 cmake is 然后在 CMakelists txt 中我写道 find package E
  • 嵌入式 SurveyMonkey 调查未出现在移动设备上

    我希望将现有的猴子调查嵌入到网页中 请按照此处的说明进行操作 http help surveymonkey com articles en US kb Website Collector http help surveymonkey com
  • perl 从 imap 消息中获取所有消息头

    I use Mail IMAPClient https metacpan org pod Mail IMAPClient 有一些变数 body imap gt body string msg header imap gt message s
  • JSON Post 调用错误函数

    我有这个 jquery post 调用 它以某种方式调用错误函数 即使它将数据完美地输入数据库
  • 对 Yampa 开关的图表感到困惑

    有一些 Yampa 开关的图表 http www haskell org haskellwiki Yampa switch http www haskell org haskellwiki Yampa switch http www has
  • 美丽的汤 - 去除外部标签

    我有一个 HTML 文档 其中包含一堆 div 的 带着孩子 p 的和里面 p div