Python 基于lxml.etree实现xpath查找HTML元素
基于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元素的更多相关文章
- Python 关于xpath查找XML元素的一点总结
关于xpath查找XML元素的一点总结 by:授客 QQ:1033553122 欢迎加入全国软件测试qq群:7156436 测试环境 Win7 64 python 3.4.0 实践出真知 代码 ...
- python在lxml中使用XPath语法进行#数据解析
在lxml中使用XPath语法: 获取所有li标签: from lxml import etree html = etree.parse('hello.html') print type(html) ...
- Python 通过lxml遍历html xpath
#coding:utf-8 ''' Created on 2017年10月9日 @author: li.liu ''' from selenium import webdriver from lxml ...
- Python爬虫利器三之Xpath语法与lxml库的用法
前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...
- python爬虫(8)--Xpath语法与lxml库
1.XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPath 是 W3C XSLT 标准的主要元素,并且 XQuery ...
- Python 通过lxml 解析html页面自动组合xpath实例
#coding:utf-8 ''' @author: li.liu ''' from selenium import webdriver from selenium.webdriver.common. ...
- Python通过lxml库遍历xml通过xpath查询(标签,属性名称,属性值,标签对属性)
xml实例: 版本一: <?xml version="1.0" encoding="UTF-8"?><country name="c ...
- 【python】lxml
来源:http://lxml.de/tutorial.html lxml是python中处理xml的一个非常强大的库,可以非常方便的解析和生成xml文件.下面的内容翻译了链接中的一部分 1.生成空xm ...
- Python之lxml
作者:Shane 出处:http://bluescorpio.cnblogs.com lxml takes all the pain out of XML. Stephan Richter lxml是 ...
- python笔记27-lxml.etree解析html
前言 之前分享过一个python爬虫beautifulsoup框架可以解析html页面,最近看到lxml框架的语法更简洁,学过xpath定位的,可以立马上手. 使用环境: python 3.6 lxm ...
随机推荐
- QShop商城-快速开始-uni-app小程序
QShop商城-快速开始-uni-app小程序 工具准备 HBuilderX 此项目为UniApp开发,开发工具为HBuilderX,下载地址: https://hx.dcloud.net.cn/Tu ...
- Leetcode数组-二分法
Leetcode数组-二分法 二分法学习地址 二分法 704. 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 targe ...
- C#笔记 线扫相机利用串口通信设置曝光
1. 串口通信 串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为串行接口电 ...
- SMOGN算法Python实现:解决回归分析中的数据不平衡
本文介绍基于Python语言中的smogn包,读取.csv格式的Excel表格文件,实现SMOGN算法,对机器学习.深度学习回归中,训练数据集不平衡的情况加以解决的具体方法. 在不平衡回归问题 ...
- jquery jquery的选择器
什么是 jQuery 前端的一个方法库/函数库 将很多过功能,封装好,我们可以直接使用 官网 https://jquery.com/ ...
- LeetCode 449. Serialize and Deserialize BST 序列化和反序列化二叉搜索树 (Java)
题目: Serialization is the process of converting a data structure or object into a sequence of bits so ...
- kettle从入门到精通 第四十五课 ETL之 kettle redis
1.kettle 9.3/9.4 spoon客户端中默认是没有redis步骤的,首先想到在kettle的插件市场进行下载redis步骤. 2.可能因为网络原因,直接下载失败了.索性放弃redis原有插 ...
- CF1184E1题解
CF11841E1 & blog 尽然想让第一条边最大且这条边在最小生成树中,那么这条边就需要尽量晚. 但是假如加上一条边 \(i\) 可以使 \(u_1\) 和 \(v_1\) 联通并且第 ...
- DBEAVER 23.0.2 调整SQL编辑器字体大小 ver:20240112
DBEAVER 23.0.2 调整SQL编辑器字体大小 ver:20240112 版本是:23.0.2. 菜单-窗口-首选项.用户界面-外观-颜色和字体.展开 DBeaver Font."M ...
- java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/gson/GsonBuilder 解决方 ...