当前位置:   article > 正文

lxml.html.fromstring 和 etree.HTML(sample)区别

html.fromstring

lxml 通常都是用etree解析,书上却用的是lxml.html,用我浅薄的英文看了下,貌似etree功能更多,lxml.html专解析html,带了点特殊的方法....

etree
  1. from lxml import etree
  2. html = etree.HTML(sample)
  3. result1 = etree.tostring(html,pretty_print =True)
  4. print(result1)
lxml.html
  1. import lxml.html
  2. html = lxml.html.fromstring(sample)
  3. result2 = lxml.html.tostring(html,pretty_print =True)
  4. print(result2)

带编码的etree.HTML

  1. import lxml.etree as le
  2. with open(‘books.xml’,’r’,encoding=‘utf-8’) as b:
  3. contents=b.read()
  4. contents_html=le.HTML(contents.encode(‘utf-8’))
  5. co_ht_xpath=contents_html.xpath(‘/*’)
  6. print(co_ht_xpath)

得到的结果基本一致,etree结果多了个html、body标签,虽然我都加了pretty_print ,实际输出还是乱作一团,根本没有整齐输出的效果,网上好多人都是这样,还没找到解决方法,还是Beautiful Soup4的prettify() 好用
link[0].attrib
{'herf':'link1.html'}
使用attrib属性得到一个字典
link[0].attrib['herf'] 结果 和 html.xpath('//a/@href')[0] 一样
<wbr>
<wbr>
link[0].text
'aa'
link[0].text_content() <wbr> (etree 没有这个属性,lxml.html独有)
'aa'
<wbr>
lxml.html.diff可以比较2个文件的差别

lxml.html.clean
clean_html 用来清除未被解析文件中所有可疑?内容

参考:
lxml.html 与 etree

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/1006299
推荐阅读