【问题标题】:Extract child tags as well as untagged text using beautiful soup 4使用美丽的汤 4 提取子标签以及未标记的文本
【发布时间】:2021-07-08 01:59:27
【问题描述】:
<div class="parent">
 <h1>  Jeff Bezos </h1>
 CEO and Founder, Amazon
 <h2> Elon musk <h2>
 <p> CEO of SpaceX <p>
 <p> CEO of <a>Tesla<a> <p>
</div>

所以本质上我需要遍历父级的所有子级,而我之前使用过这段代码

parent.find_all(recursive=False):

但现在我遇到了一个问题,我的页面包含未标记的文本,因此在此示例中为“CEO 和创始人,亚马逊”。子标签可以有很深的嵌套,但我需要遍历所有下一级的项目,包括未标记的文本。这里没有我可以使用的结构或模式,未标记的文本位于 html 中的随机位置

我的预期输出:

["<h1>  Jeff Bezos </h1>", 
 "CEO and Founder, Amazon", 
 "<h2> Elon musk <h2>",
 "<p> CEO of SpaceX <p>",
 "<p> CEO of <a>Tesla<a> <p>"]

带有标签的行仍然是 bs4 对象,但字符串被提取为 navigablestring 或只是文本

有什么办法吗?

【问题讨论】:

    标签: python html web-scraping beautifulsoup


    【解决方案1】:
    from bs4 import BeautifulSoup
    
    html = """<div class="parent">
     <h1>  Jeff Bezos </h1>
     CEO and Founder, Amazon
     <h2> Elon musk <h2>
     <p> CEO of SpaceX <p>
     <p> CEO of <a>Tesla<a> <p>
    </div>
    """
    
    
    soup = BeautifulSoup(html, 'lxml')
    print(list(soup.select_one('.parent').stripped_strings))
    

    输出:

    ['Jeff Bezos', 'CEO and Founder, Amazon', 'Elon musk', 'CEO of SpaceX', 'CEO of', 'Tesla']
    

    【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2019-11-07
    相关资源
    最近更新 更多