前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 系列文章 —— lxml 详解

Python 系列文章 —— lxml 详解

原创
作者头像
玩转编程
发布2022-01-13 11:06:34
3380
发布2022-01-13 11:06:34
举报
文章被收录于专栏:玩转编程
  • lxml.py
代码语言:javascript
复制
from lxml import etree
from io import StringIO

test_html = '''
<html>
    <body>
        <div>
            <!-- 这里是注释 -->
            <h4>手机品牌商<span style="margin-left:10px">4</span></h4>
            <ul>
               <li>小米</li>
               <li>华为</li>
               <li class='blank'> OPPO </li>
               <li>苹果</li>
            </ul>
        </div>
        <div id="last_div">
            <h4>电脑品牌商<span style="margin-left:10px">3</span></h4>
            <ul class="ul" style="color:red">
                <li>戴尔</li>
                <li>机械革命</li>
                <li>ThinkPad</li>
            </ul>
        </div>
    </body>
</html>'''

html = etree.parse(StringIO(test_html))
print(html)

li_list = html.xpath('//li')

print("类型:")
print(type(li_list))

print("值:")
print(li_list)

print("个数:")
print(len(li_list))

for l in li_list:
    print("li文本为:" + l.text)

# 根据属性获取
blank_li_list = html.xpath('//li[@class="blank"]')

print("类型:")
print(type(blank_li_list))

print("值:")
print(blank_li_list)

print("个数:")
print(len(blank_li_list))


for l in blank_li_list:
    print("blank_li文本为:" + l.text)


ul = html.find('//ul')
for name, value in ul.attrib.items():
    print('{0}="{1}"'.format(name, value))
ul.set("new_attr", "true")
new_attr = ul.get('new_attr')
print(new_attr)


last_div = html.xpath('//div[last()]')[0]
print("TAG:")
print(last_div.tag)
print("值:")
print(last_div.text)


child = etree.Element("child")
child.text = "这里是新的子元素"
last_div.append(child)
clild_text = last_div.find("child").text
print(clild_text)

first_ul = html.find("//ul")
ul_li = first_ul.xpath("li")
for li in ul_li:
    first_ul.remove(li)

ul_li = first_ul.xpath("li")
if len(ul_li) == 0:
    print("元素被删除了")

body = html.find("body")
for sub in body.iter():
    print(sub.tag)
    print(sub.text)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档