xpath语法分享
# xpath语法: ## 使用方式:
使用//获取整个页面当中的元素,然后写标签名,然后再写谓词进行提取。比如:
```
//div[@class='abc']
``` ## 需要注意的知识点:
1. /和//的区别:/代表只获取直接子节点。//获取子孙节点。一般//用得比较多。当然也要视情况而定。
2. contains:有时候某个属性中包含了多个值,那么可以使用`contains`函数。示例代码如下:
```
//div[contains(@class,'job_detail')]
```
3. 谓词中的下标是从1开始的,不是从0开始的。 ## 使用lxml解析HTML代码:
1. 解析html字符串:使用`lxml.etree.HTML`进行解析。示例代码如下:
```python
htmlElement = etree.HTML(text)
print(etree.tostring(htmlElement,encoding='utf-8').decode("utf-8"))
```
2. 解析html文件:使用`lxml.etree.parse`进行解析。示例代码如下:
```python
htmlElement = etree.parse("tencent.html")
print(etree.tostring(htmlElement, encoding='utf-8').decode('utf-8'))
```
这个函数默认使用的是`XML`解析器,所以如果碰到一些不规范的`HTML`代码的时候就会解析错误,这时候就要自己创建`HTML`解析器。
```python
parser = etree.HTMLParser(encoding='utf-8')
htmlElement = etree.parse("lagou.html",parser=parser)
print(etree.tostring(htmlElement, encoding='utf-8').decode('utf-8'))
``` ## lxml结合xpath注意事项:
1. 使用`xpath`语法。应该使用`Element.xpath`方法。来执行xpath的选择。示例代码如下:
```python
trs = html.xpath("//tr[position()>1]")
```
`xpath函数`返回来的永远是一个列表。
2. 获取某个标签的属性:
```python
href = html.xpath("//a/@href")
# 获取a标签的href属性对应的值
```
3. 获取文本,是通过`xpath`中的`text()`函数。示例代码如下:
```python
address = tr.xpath("./td[4]/text()")[0]
```
4. 在某个标签下,再执行xpath函数,获取这个标签下的子孙元素,那么应该在斜杠之前加一个点,代表是在当前元素下获取。示例代码如下:
```python
address = tr.xpath("./td[4]/text()")[0]
xpath语法分享的更多相关文章
- Xpath语法-爬虫(一)
前言 这一章节主要讲解Xpath的基础语法,学习如何通过Xpath获取网页中我们想要的内容;为我们的后面学习Java网络爬虫基础准备工作. 备注:此章节为基础核心章节,未来会在网络爬虫的数据解析环节经 ...
- Python爬虫利器三之Xpath语法与lxml库的用法
前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...
- XPath语法 在C#中使用XPath示例 【转http://www.cnblogs.com/yukaizhao/archive/2011/07/25/xpath.html】非常详细的文章
XPath语法 在C#中使用XPath示例 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml ve ...
- XPath语法 在C#中使用XPath示例
XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml version="1.0" en ...
- Dom4j使用Xpath语法读取xml节点
我们可以使用Xpath的语法来轻易的读取xml的某个节点[类似于jQuery的选择器]: 使用Xpath语法需要添加新的jaxen-1.1-beta-7.rar 这个jar包 dom4j完整jar包我 ...
- XDocument读取xml的所有元素以及XPath语法
原文 http://www.cnblogs.com/xxyishutong/p/3326375.html <?xml version="1.0" encoding=&quo ...
- C#操作Xml:XPath语法 在C#中使用XPath示例
XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- Xpath语法学习
贴几个我学习Xpath的参考 1 基本使用的参考 XPath学习:基本语法(一) 2 较为详细且清晰例子参考,推荐 XPath 详解,总结 3 详细语法参考 Xpath语法格式整理 4 官方参考 XP ...
- 芝麻HTTP:Python爬虫利器之Xpath语法与lxml库的用法
安装 pip install lxml 利用 pip 安装即可 XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPat ...
随机推荐
- 证书pfx转jks
keytool -importkeystore -srckeystore 2756649_order.hanels-home.com.pfx -srcstoretype pkcs12 -destke ...
- HDU - 3416-Marriage Match IV (最大流 + 最短路)
HDU - 3416:http://acm.hdu.edu.cn/showproblem.php?pid=3416 参考:https://www.cnblogs.com/kuangbin/archiv ...
- CodeM资格赛 优惠券
[编程|1000分] 优惠券 时间限制:1秒空间限制:32768K 题目描述 美团点评上有很多餐馆优惠券,用户可以在美团点评App上购买.每种优惠券有一个唯一的正整数编号.每个人可以拥有多张优惠券,但 ...
- JUC(1)
cmd目录切换 D:\>cd /d D:\Program Files\Java\jdk1.8.0_201\bin 1. JUC 简介 在 Java 5.0 提供了 java.util.concu ...
- python实现煲机脚本
生日的时候女票送了一副新耳机,还挺帅气. 装逼界的人都知道,新耳机是有"煲"这个步骤的 至于有没有效果?怎么煲?煲多久?这些问题都是耳机界常年争执的问题,各路高手分成各种门派常年杀 ...
- 基于Selenium+Python的web自动化测试框架
一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...
- Failed to read artifact descriptor for xxx:jar:版本号
解决步骤: 1.先删除对应的本地仓库下的文件夹,比如org.apache.maven.plugins:maven-resource,删掉plugins文件夹 2.项目右键-->Maven--&g ...
- android中的菜单Menu
Menu是一个接口, 他有2个子接口, SubMenu和ContextMenu; 前者菜单常见于按home键就会出现 ,后者是一个上下文菜单, 一般点击某个条目会在手机屏幕中出现一个类似悬浮窗口的菜单 ...
- SpringBoot整合redis缓存(一)
准备工作 1.Linux系统 2.安装redis(也可以安装docker,然后再docker中装redis,本文章就直接用Linux安装redis做演示) redis下载地址: 修改redis,开启远 ...
- 第二次作业:使用Packet Tracer分析应用层协议(DNS、FTP、DHCP、SMTP、POP3)
0 个人信息 张樱姿 201821121038 计算1812 1 实验目的 熟练使用Packet Tracer工具.分析抓到的应用层协议数据包,深入理解应用层协议,包括语法.语义.时序. 2 实验内容 ...