XPath的初步认识
嘿嘿,最近开始上班,不是过于太忙,而是自己一直在学习一些项目中用到的而我暂时还没接触的知识,WCF,log4等,感觉还没有总结的需要吧,虽然都了解啦,但是暂时还是初步的学习,基础的暂时是知道啦,还没有练习的太多吧,嘿嘿,由于以后就要常常使用XPath啦,所以就来做一个XPath的Demo练习下。
一.XPath的Demo
下面是在html页面上操作元素,使用XPath过滤想要的表格文本,然后以表格的形式保存在一个文本中,如下所示:
using System;
using System.Web;
using HtmlAgilityPack;
using System.IO;
using System.Xml; public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int num = ;
string xpathtrNode = "//*[@id='ReportList']/thead/tr/th";
string xpathtdNode = "//*[@id='ReportList']/tbody/tr/td";
//获取html的路径
string path = context.Request.MapPath("HtmlPage.html");
//string html = File.ReadAllText(path);
//使用Nuget包下载并添加引用HtmlAgilityPack,调用其方法获取html
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.Load(path); //创建html的节点
HtmlNode rootNode = htmlDoc.DocumentNode;
//使用XPath获取需要查询的元素文本,返回一个HtmlNode类型的集合
HtmlNodeCollection tabList = rootNode.SelectNodes(xpathtrNode); HtmlNode tdNode = htmlDoc.DocumentNode;
HtmlNodeCollection tdList = tdNode.SelectNodes(xpathtdNode); //HtmlNode td13=htmlDoc.DocumentNode;
//HtmlNodeCollection td13List =td13.SelectNodes(xpLasttd);
foreach ( HtmlNode item in tabList)
{
num++;
string tableText = item.InnerText + " ";
if (num == )
{
tableText = tableText + "\n";
num = ;
}
//常见文件,把要输出的内容输出在Excel文件中
File.AppendAllText(@"F:\公司Xpath\tablepath.xls", tableText, System.Text.Encoding.Default);
}
foreach (HtmlNode td in tdList)
{
string tdText = td.InnerText;
tdText = tdText + " ";
num++;
if (num == )
{
tdText = tdText + "\n";
num = ;
}
File.AppendAllText(@"F:\公司Xpath\tablepath.xls", tdText, System.Text.Encoding.Default);
}
}
}
二.XPath的运算符
|
运算符/特殊字符 |
说明 |
|
/ |
此路径运算符出现在模式开头时,表示应从根节点选择。 |
|
// |
从当前节点开始递归下降,此路径运算符出现在模式开头时,表示应从根节点递归下降。 |
|
. |
当前上下文。 |
|
.. |
当前上下文节点父级。 |
|
* |
通配符;选择所有元素节点与元素名无关。(不包括文本,注释,指令等节点,如果也要包含这些节点请用node()函数) |
|
@ |
属性名的前缀。 |
|
@* |
选择所有属性,与名称无关。 |
|
: |
命名空间分隔符;将命名空间前缀与元素名或属性名分隔。 |
|
( ) |
括号运算符(优先级最高),强制运算优先级。 |
|
[ ] |
应用筛选模式(即谓词,包括"过滤表达式"和"轴(向前/向后)")。 |
|
[ ] |
下标运算符;用于在集合中编制索引。 |
|
| |
两个节点集合的联合,如://messages/message/to | //messages/message/cc |
|
- |
减法。 |
|
div, |
浮点除法。 |
|
and, or |
逻辑运算。 |
|
mod |
求余。 |
|
not() |
逻辑非 |
|
= |
等于 |
|
!= |
不等于 |
|
特殊比较运算符 |
< 或者 < <= 或者 <= > 或者 > >= 或者 >= 需要转义的时候必须使用转义的形式,如在XSLT中,而在XMLDOM的scripting中不需要转义。 |
|
轴名称 |
结果 |
|
ancestor |
选取当前节点的所有先辈(父、祖父等) |
|
ancestor-or-self |
选取当前节点的所有先辈(父、祖父等)以及当前节点本身 |
|
attribute |
选取当前节点的所有属性 |
|
child |
选取当前节点的所有子元素。 |
|
descendant |
选取当前节点的所有后代元素(子、孙等)。 |
|
descendant-or-self |
选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 |
|
following |
选取文档中当前节点的结束标签之后的所有节点。 |
|
namespace |
选取当前节点的所有命名空间节点 |
|
parent |
选取当前节点的父节点。 |
|
preceding |
直到所有这个节点的父辈节点,顺序选择每个父辈节点前的所有同级节点 |
|
preceding-sibling |
选取当前节点之前的所有同级节点。 |
|
self |
选取当前节点。 |
暂时的即先总结到这里啦,嘿嘿,对于XPath的一语法我只是初步的认识,但是熟练的掌握我还是要继续联系的,学习是要一直坚持的,友友们,加油加油!
XPath的初步认识的更多相关文章
- 第05组 Alpha冲刺 (1/6)
.th1 { font-family: 黑体; font-size: 25px; color: rgba(0, 0, 255, 1) } #ka { margin-top: 50px } .aaa11 ...
- XPath 初步讲解
2016-05-05 XPath是JavaScript 中节点查找手段,ie9以后的版本才支持w3c标准,其他浏览器基本支持.在e8之前的浏览器,通过基于 activeX的xml dom对象实现. 为 ...
- Python爬虫利器三之Xpath语法与lxml库的用法
前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...
- 芝麻HTTP:Python爬虫利器之Xpath语法与lxml库的用法
安装 pip install lxml 利用 pip 安装即可 XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPat ...
- xpath详细讲解
什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...
- 洗礼灵魂,修炼python(71)--爬虫篇—【转载】xpath/lxml模块,爬虫精髓讲解
Xpath,lxml模块用法 转载的原因和前面的一样,我写的没别人写的好,所以我也不浪费时间了,直接转载这位崔庆才大佬的 原帖链接:传送门 以下为转载内容: --------------------- ...
- 8.正则表达式和XPath
1.使用正则表达式爬取内涵段子 import requests import re def loadPage(page): url = "http://www.neihan8.com/art ...
- 【个人】爬虫实践,利用xpath方式爬取数据之爬取虾米音乐排行榜
实验网站:虾米音乐排行榜 网站地址:http://www.xiami.com/chart 难度系数:★☆☆☆☆ 依赖库:request.lxml的etree (安装lxml:pip install ...
- 在Scrapy项目【内外】使用scrapy shell命令抓取 某网站首页的初步情况
Windows 10家庭中文版,Python 3.6.3,Scrapy 1.5.0, 时隔一月,再次玩Scrapy项目,希望这次可以玩的更进一步. 本文展示使用在 Scrapy项目内.项目外scrap ...
随机推荐
- 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 输入例子 ...
- Linux之安装本地Python和pip
wget https://www.python.org/ftp/python/3.4.5/Python-3.4.5.tgz tar zxfv Python-3.4.5.tgz ./configure ...
- c数据结构第一个公式写程序计算给定多项式在给定点x处的值
假设x=2,那么a的数组有几个, 那n就是根据索引来的 假设数组[, , , , ] n就是0, 1, 2,,3, 4 f = + ( + ( + ( + ()))) f = + ( + ( + ( ...
- 00-01.PHP 网站假设win7配置自己的IIS服务器亲自做的图文很详细 [转 - 赞 ]
win7配置自己的IIS服务器亲自做的图文很详细 分步阅读 跟人网站爱好初学者必看的win7系统配置自己的IIS,可以在你自己的电脑上配置网站服务器发不到网上,下面就跟着我的步骤一起做吧100%成功. ...
- PLSQL导入Excel文件预览不到数据行问题
今天,从Excel导入Oracle一些数据,在导入的过程中,遇到一个问题,Excel里面有好几万条数据,但是通过PLSQL导入向导导入Excel文件之后,在PLSQL里却预览不到数据行,只能看见标题行 ...
- 又看了半天的pdf格式的js方面的书,感觉受益匪浅啊,只会一点操作的我,要学好理论
又看了半天的pdf格式的js方面的书,感觉受益匪浅啊,只会一点操作的我,要学好理论
- C# 抓取网页的img src带参数的图片链接,并下载
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- C# 获取文件大小
当然了都需要引入System.IO这个命名空间 第一个: public static long GetDirectoryLength(string dirPath){//判断给定的路径是否存在,如果不 ...
- iOS:TabBarController 显示/隐藏第一级页面的TabBar
- (void)setTabBarHidden:(BOOL)hidden { UIView *tab = self.tabBarController.view; ) { return; } UIVie ...
- UNIX环境编程学习笔记(1):——出错处理errno
lienhua342014 年 8 月 24 日 1. errno变量 文件 <errno.h> 中定义了符号 errno 以及可以赋予它的各种常量,这些常量都是以字符 E 开头.例如,若 ...