基于lxml.etree实现xpath查找HTML元素

By:授客 QQ:1033553122

#实践环境

WIN 10

Python 3.6.5

lxml-4.6.2-cp36-cp36m-win_amd64.whl

#实践代码

#!/usr/bin/env python
# -*- coding:utf-8 -*- from lxml import etree html_str = '''<html> <body> <table width="400" border="1">
<tr>
<th align="left">消费项目....</th>
<th align="right">一月</th>
<th align="right">二月</th>
</tr>
<tr>
<td align="left">衣服</td>
<td align="right">$241.10</td>
<td align="right">$50.20</td>
</tr>
<tr>
<td align="left">化妆品</td>
<td align="right">$30.00</td>
<td align="right">$44.45</td>
</tr>
<tr>
<td align="left">食物</td>
<td align="right">$730.40</td>
<td align="right">$650.00</td>
</tr>
<tr>
<th align="left">总计</th>
<th align="right">$1001.50</th>
<th align="right">$744.65</th>
</tr>
</table> </body>
</html>
''' root_node = etree.HTML(html_str) # 解析HTML字符串,并返回HTML根结点
print('根节节点名称为:%s' % root_node.tag) # 输出 html # 查找根节点
print(root_node.xpath('/html')) # 输出 <Element html at 0x17245dc8508>] tr_element_list = root_node.xpath("//table/tr[2]/td") # 获取table元素节点下,第二个tr元素节点下的所有td元素
for element in tr_element_list:
print(element.tag, element.text) /* for循环输出如下
td 衣服
td $241.10
td $50.20
*/ etree.tostring(root_node, encoding='utf-8').decode('utf-8') ## 输出节点内容
second_tr = root_node.xpath('//table/tr[2]')[0] # 获取table元素节点下,第二个tr元素节点
print(etree.tostring(second_tr, encoding='utf-8').decode('utf-8')) ## 输出节点内容
/*
<tr>
<td align="left">衣服</td>
<td align="right">$241.10</td>
<td align="right">$50.20</td>
</tr>
*/
# 注意:etree.tostring返回结果为字节对象
print(etree.tostring(second_tr)) ## 输出以下内容
/*
b'<tr>\n <td align="left">衣服</td>\n <td align="right">$241.10</td>\n <td align="right">$50.20</td>\n </tr>\n '
*/ print(etree.tostring(second_tr).decode('utf-8')) # 输出以下内容
/*
<tr>
<td align="left">衣服</td>
<td align="right">$241.10</td>
<td align="right">$50.20</td>
</tr>
*/

  

#参考连接

https://lxml.de/tutorial.html#the-element-class

https://lxml.de/tutorial.html#the-xml-function

Python 基于lxml.etree实现xpath查找HTML元素的更多相关文章

  1. Python 关于xpath查找XML元素的一点总结

    关于xpath查找XML元素的一点总结 by:授客 QQ:1033553122   欢迎加入全国软件测试qq群:7156436   测试环境 Win7 64 python 3.4.0 实践出真知 代码 ...

  2. python在lxml中使用XPath语法进行#数据解析

    在lxml中使用XPath语法: 获取所有li标签: from lxml import etree html = etree.parse('hello.html') print type(html) ...

  3. Python 通过lxml遍历html xpath

    #coding:utf-8 ''' Created on 2017年10月9日 @author: li.liu ''' from selenium import webdriver from lxml ...

  4. Python爬虫利器三之Xpath语法与lxml库的用法

    前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...

  5. python爬虫(8)--Xpath语法与lxml库

    1.XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...

  6. Python 通过lxml 解析html页面自动组合xpath实例

    #coding:utf-8 ''' @author: li.liu ''' from selenium import webdriver from selenium.webdriver.common. ...

  7. Python通过lxml库遍历xml通过xpath查询(标签,属性名称,属性值,标签对属性)

    xml实例: 版本一: <?xml version="1.0" encoding="UTF-8"?><country name="c ...

  8. 【python】lxml

    来源:http://lxml.de/tutorial.html lxml是python中处理xml的一个非常强大的库,可以非常方便的解析和生成xml文件.下面的内容翻译了链接中的一部分 1.生成空xm ...

  9. Python之lxml

    作者:Shane 出处:http://bluescorpio.cnblogs.com lxml takes all the pain out of XML. Stephan Richter lxml是 ...

  10. python笔记27-lxml.etree解析html

    前言 之前分享过一个python爬虫beautifulsoup框架可以解析html页面,最近看到lxml框架的语法更简洁,学过xpath定位的,可以立马上手. 使用环境: python 3.6 lxm ...

随机推荐

  1. C# Datagridview combox列 初始化颜色

    DataGridView 初始化完成后,在combox里显示颜色,如这样: DataGridView 注册 cellPainting事件: private void m_dataGridView_Ce ...

  2. harbor 构建企业级镜像仓库

    安装harbor 构建企业级镜像仓库 Harbor是由VMware公司开源的镜像仓库,harbor是在docker Registry上进行了企业级扩展,从而获得了更广泛的应用,这些新的企业级特性包括: ...

  3. 01.Alpine编译glibc

    概要 本文档采用glibc2.28版本作为示例,模拟内网环境无法访问github等开源社区 为精简docker容器镜像,采用Alpine镜像,需要手动编译glibc源代码 制作编译好的glibc二进制 ...

  4. kettle从入门到精通 第四十五课 ETL之 kettle redis

    1.kettle 9.3/9.4 spoon客户端中默认是没有redis步骤的,首先想到在kettle的插件市场进行下载redis步骤. 2.可能因为网络原因,直接下载失败了.索性放弃redis原有插 ...

  5. nordic——long range测试

    简介:本案例测试了long range,注意nrf52系列芯片中,部分硬件是不支持CADE的,也就是不支持long range,如nrf52832就不支持long range.同时协议栈也是部分支持, ...

  6. vite+vue3+ts+elementPlus前端框架搭建 [一]

    记录下搭建vite + vue3 + ts + elementPlus项目的过程及遇到的问题. 建议使用pnpm安装依赖,npm切换到pnpm 链接地址:[https://www.pnpm.cn/in ...

  7. Vue 打包相关

    Vue 打包相关 vue-cli-service build# 用法:vue-cli-service build [options] [entry|pattern] 选项: --mode 指定环境模式 ...

  8. CountDownLatch demo演示数据分片多线程处理

    # CountDownLatch demo演示数据分片多线程处理 package com.example.core.mydemo; import org.springframework.schedul ...

  9. Python中的属性

    Python中的属性主要分为类属性,对象属性. 1.类属性 类属性:类所有,所有的实例对象都能够共享,类定义时就直接指定的属性,能通过类名和实力对象名访问,当当前的类属性被实例对象通过对象名.属性名的 ...

  10. 鸿蒙生态伙伴SDK市场正式发布,驱动千行百业鸿蒙原生应用开发

    6月21-23日,华为开发者大会(HDC 2024)在东莞举办.在22日举办的[鸿蒙生态伙伴SDK]论坛中,正式发布了[鸿蒙生态伙伴SDK市场](以下简称:伙伴SDK市场),伙伴SDK市场是为开发者提 ...