美丽的汤find_all包裹在一起而不是单独

时间:2017-11-18 05:56:14

标签: python html python-3.x beautifulsoup findall

长话短说,我尝试使用Beautiful Soup用强标签替换b标签。 汤需要一些包含

的输入
<b>Words:</b> attributes
<b>Other Words:</b> other attributes

我有以下python3代码:

strong_tag = soup.new_tag("strong")
if(soup.find('b')):
    for b_tag in soup.find_all('b'):
        b_tag.wrap(strong_tag)

此输出

attributes
<strong><b>Words:</b><b>Other Words:</b></strong> other attributes

而不是

<strong><b>Words:</b></strong> attributes
<strong><b>Other Words:</b></strong> other attributes

我该如何解决这个问题?

我假设一旦我能解决这个问题,我就可以从b标签中提取()内容,只留下强标签。

3 个答案:

答案 0 :(得分:1)

你只需要:

<strong><b>Words:</b></strong> attributes
<strong><b>Other Words:</b></strong> other attributes

这将打印:

struct child
{
    char name[15];
    int num;
    struct child *next;
};

struct parent
{
    char name[15];
    struct child *head_child;
    struct parent *next;
};

struct parent *head_parent;

答案 1 :(得分:0)

简单的希望你希望它

from BeautifulSoup import BeautifulSoup, Tag
    mes=""" <b>Words:</b> attributes
    <b>Other Words:</b> other attributes"""
    soup = BeautifulSoup(mes)

    for a in soup.findAll('b'):
          p = Tag(soup, 'strong')
          a.replaceWith(p)
          p.insert(0, a)

    print soup

答案 2 :(得分:0)

replace怎么样?

from bs4 import BeautifulSoup
div_test="""<b>Words:</b> attributes
<b>Other Words:</b> other attributes"""
soup = BeautifulSoup(div_test,'lxml')

str(soup).replace("b>","strong>")

输出:

<html><body><strong>Words:</strong> attributes
<strong>Other Words:</strong> other attributes
</body></html>