【问题标题】:Parse an HTML element using the pyquery library or beautifulsoup. or a different alternative使用 pyquery 库或 beautifulsoup 解析 HTML 元素。或不同的选择
【发布时间】:2021-02-09 21:55:10
【问题描述】:
<div1 class="tag1">
  <div2 class="tag2">
    <div3 class="tag3">no</div3>
    yes
  </div2>
</div1>

我想解析 div1,如果它有文本,我会得到它的文本 我想保留{name_class: tag1 (or None), text: None}, 我重申:{name_class: tag2 , text: yes}, {name_class: tag3 , text: no}

我解决这个问题的代码:

from pyquery import PyQuery as pq

a = '<div><div>no</div>yes</div>'
tryy = pq(a)[0]

tmp = [{"text" : tryy.text, "class" : pq(tryy).attr('class')}]
tmp + parse_rec(a)

type(tryy) = lxml.etree._Element' 但问题是:lxml.etree._Element.text 不保留“是”包含在 div2 中

我试过了,但它不适用于 bs4 Only extracting text from this element, not its children

欢迎任何图书馆的所有解决方案

【问题讨论】:

    标签: python beautifulsoup lxml pyquery


    【解决方案1】:

    根据文档,文本“yes”将被视为元素 div3tail。使用您的示例 XML,以下代码:

    from lxml import etree
    
    root = etree.parse("sample.xml")
    
    for element in root.getiterator():
        print(f"{element.text.strip()}, {element.attrib['class']}, {element.tail.strip() if element.tail else ''}")
    

    输出:

    , tag1, 
    , tag2, 
    no, tag3, yes
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-22
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-07
      • 1970-01-01
      相关资源
      最近更新 更多