【问题标题】:Replace text in HTML tag. Beautiful Soup替换 HTML 标记中的文本。美丽的汤
【发布时间】:2017-10-13 19:39:22
【问题描述】:

您知道是否可以将标签内的文本替换为另一个标签?

例如。在这种情况下:

 <td style="text-align:center;font-size:10px;line-height:10px; width:37px;">--</td>

我正在尝试废弃“td”标签内的信息并用“span”标记,但有些情况下没有标签“span”,这是我要废弃的标签。我想将“td”标签内的字符串“--”替换为:

 <span class="something"></span>

得到这样的东西:

   <td style="text-align:center;font-size:10px;line-height:10px; width:37px;"> <span class="something"></span></td>

我看到可以将一个标签替换为另一个标签,但我不知道这是否可能或如何做到这一点

【问题讨论】:

  • 你好,你的问题不清楚你想做什么?
  • 嗨。我编辑了这个问题。这就是我想要得到的。将 td 标记内的“--”文本替换为上面写的所有 span 标记。

标签: python html web-scraping beautifulsoup


【解决方案1】:

虽然你的意图不明确,但使用简单的jQuery就可以达到效果。

$('td').html("<span class='something'></span>");

如果您想要将td 中的所有内容放入一个新的span

var currentText = $('td').html();
$('td').html("<span class='something'>" + currentText +"</span>");

这将改变

<td style="...">Hello</td>

进入

<td style="..."><span class="something">Hello</span></td>

希望你能得到答案。


编辑:

此示例适用于其中有 td 元素的场景,其中包含和不包含 span 元素。此代码在修改之前检查 td 内是否有任何直接子 span

$("td").each(function(index) {
    if($(this).find('> span').length == 0){
        var currentText = $(this).html();
        $(this).html("<span class='something'>" + currentText +"</span>");
    }
});

在python中,使用pyquery包或者等价物来操作html/xml,达到同样的效果。

【讨论】:

  • 是的。我想要的结果就是这样。我忘了说的是有些TD标签里面已经有SPAN了。所以我只想在那些没有它的地方插入 SPAN(TD 标签里面有那个“--”文本,而不是 SPAN
  • 好的,我会改进答案。
  • 我会试试这个,但我从未在 pyhton 中使用过 JQuery。只是一个库和使用函数吧?
  • 是的,使用pyquery,虽然我使用原始jQuery向您展示了方法,但您可以在pyquery中进行相同的操作以达到相同的效果。
【解决方案2】:
<td style="text-align:center;font-size:10px;line-height:10px; width:37px;">--</td>

在这个TD标签中添加id,然后

document.getElementById("td_id").innerHTML = "<span>your items</span>";

【讨论】:

  • 是的。我想要的结果就是这样。我忘了说的是有些TD标签里面已经有SPAN了。所以我只想在那些没有它的地方插入 SPAN(TD 标签里面有那个“--”文本,而不是 SPAN
  • 为此,您必须创建一些条件,并且您可以使用 python 或其他东西来管理这些条件,因为您正在使用 scrappy。使用 python 检查该行中是否存在类似 的内容
猜你喜欢
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 2022-11-17
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多