xpath是什么(入门教程)

一、总结

一句话总结:一句话,XPath 是一门在 XML 文档中查找信息的语言。简单来说,html类似于xml结构,但是没有xml格式那么严格。

在xml中查找信息 包括html

1、如何获取想要部分的xpath路径?

使用chrome

chrome 谷歌浏览器中很方便找到

2、xpath验证工具?

google浏览器扩展XPath_Helper

google浏览器扩展 XPath Helper

样子如下:

3、xpath的特点?

简单 易学 和常规的电脑系统文件路径中的表达式非常相似

XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。

可以随便去网上找个教程,很快很快学会

比如:XPath 教程 | 菜鸟教程
http://www.runoob.com/xpath/xpath-tutorial.html

二、xpath入门教程(转)

转自:xpath入门教程 - liwenbo_csu的博客 - CSDN博客
https://blog.csdn.net/liwenbo_csu/article/details/78540376

 
大部分程序开发者应该都有过爬取网页的经历,每个人爬取的方法也不太相同,有的用强大的正则表达式,有的用selector,有的也会用第三方提供的插件等等。每种方法都有各自的优缺点,比如正则的抓取效率问题但是通用性强,selector上手难度,插件类比如simple_dom_php抓取不到直接error退出进程问题等等。这里不做过多评价,只介绍一个好用的、强大的、易上手的抓取工具xpath。
 
什么是xpath
一句话,XPath 是一门在 XML 文档中查找信息的语言。简单来说,html类似于xml结构,但是没有xml格式那么严格。
 
十分钟入门xpath
入门用法,如何抓取百度首页图片链接
使用谷歌浏览器获取需要抓取元素的xpath路径
把自动生成的路径拷贝到代码中(ps:这里把网页代码保存在了本地!)
运行查看结果

第二步:掌握基本语法,xpath语法类似于路径选择,非常容易上手
以下图html举例如何获取不同的节点:
方法一:根据路径获取节点信息
方法二:根据属性值快速选取节点
掌握以上几种常用法,基本上就可以快速开发一个页面的抓取功能了,是不是非常简单,赶紧自己动手试试吧。更深入的用法无非是在上面基础上加了一些函数操作,具体可以搜索xpath教程,这里只做入门,不再深入介绍。
 
性能如何?
这里我使用上述html建立了以下基准进行测试:
1、使用PHP语言 (php版本5.4.41)
2、选取相同网页,约20W字符 (www.baidu.com)
3、各抓取一千次 (循环一千次,抓取所有img标签的图片地址)
分别用正则和xpath进行抓取,比较处理时间。
首先定义两个抓取方法:
循环调用一千次,得出结论:本次测试,xpath爬取可以做到秒级;正则是分钟级别
说明:上述测试基准可能不太明确,但是差异较大已经足够得到我们需要的对比结果。
 
总结一下:
XPath的优势在于它的速度,这是因为它把html以树形的结构进行存储,在你通过层级关系查找节点的时候,并不需要对所有字符串进行遍历,它的底层是通过libxml构建一棵DOM树实现的查找。
XPath其实并不容易掌握(ps:我的意思是要深入掌握),它的语法和函数都非常多,学习起来成本也比较高,但是在普通的抓取业务中,只需要掌握一些基本的就足够了。
XPath的语法和规则跟语言是无关的。
这里只讨论了xpath对单个网页的爬取新的基本方法,帮助开发人员快速抓取网页中的信息。因为简单快速,适用范围必然比不上强大的正则表达式,可以根据各自的应用场景选择。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

xpath是什么(入门教程)的更多相关文章

  1. 网页结构的简介和Xpath语法的入门教程

    相信很多小伙伴已经听说过Xpath,之前小编也写过一篇关于Xpath的文章,感兴趣的小伙伴可以戳这篇文章如何利用Xpath抓取京东网商品信息以及Python网络爬虫四大选择器(正则表达式.BS4.Xp ...

  2. 【Hawk】入门教程(1)——从URL开始

    入门教程(1)--从URL开始 首先感谢辛苦的沙漠君 先把沙漠君的教程载过来:)可以先看一遍 Hawk-数据抓取工具:简明教程 Hawk 数据抓取工具 使用说明(二) 20分钟无编程抓取大众点评17万 ...

  3. [转]Scrapy入门教程

    关键字:scrapy 入门教程 爬虫 Spider 作者:http://www.cnblogs.com/txw1958/ 出处:http://www.cnblogs.com/txw1958/archi ...

  4. Scrapy入门教程

    关键字:scrapy 入门教程 爬虫 Spider作者:http://www.cnblogs.com/txw1958/出处:http://www.cnblogs.com/txw1958/archive ...

  5. 转:Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)

    Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...

  6. Scrapy安装、爬虫入门教程、爬虫实例(豆瓣电影爬虫)

    Scrapy在window上的安装教程见下面的链接:Scrapy安装教程 上述安装教程已实践,可行.(本来打算在ubuntu上安装Scrapy的,但是Ubuntu 磁盘空间太少了,还没扩展磁盘空间,所 ...

  7. scrapy爬虫框架入门教程

    scrapy安装请参考:安装指南. 我们将使用开放目录项目(dmoz)作为抓取的例子. 这篇入门教程将引导你完成如下任务: 创建一个新的Scrapy项目 定义提取的Item 写一个Spider用来爬行 ...

  8. python之scrapy入门教程

    看这篇文章的人,我假设你们都已经学会了python(派森),然后下面的知识都是python的扩展(框架). 在这篇入门教程中,我们假定你已经安装了Scrapy.如果你还没有安装,那么请参考安装指南. ...

  9. Scrapy入门教程(转)

    关键字:scrapy 入门教程 爬虫 Spider作者:http://www.cnblogs.com/txw1958/出处:http://www.cnblogs.com/txw1958/archive ...

随机推荐

  1. Iris Classification on PyTorch

    Iris Classification on PyTorch code # -*- coding:utf8 -*- from sklearn.datasets import load_iris fro ...

  2. ldap集成zabbix

    zabbix版本:3.0.7 ldap认证配置: zabbix管理员登录-->管理-->认证,选择ldap方式 参照以上格式填写,需注意配置完成后需在zabbix上创建与ldap同名账户才 ...

  3. C语言实现随机生成0或1

    rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数.如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的.srand(u ...

  4. LD_RUN_PATH和LD_LIBRARY_PATH是干什么的?

    1. 使用场合 LD_RUN_PATH在链接时使用 LD_LIBRARY_PATH在执行时使用 2. 如何指定环境变量 export LD_LIBRARY_PATH=/opt/jello/lib:$L ...

  5. linux下如何按行将文件切割成多个小文件

    答: split -l <行数> <目标文件> <切割后的文件前缀> 举例如下: split -l 1000 jello.txt jello 将jello.txt文 ...

  6. P4306 [JSOI2010]连通数

    思路 要求求每个点能到达的点数就是传递闭包 然后n^3Floyd可做,但是n=2000,然后bitset压位 复杂度\(O(\frac{n^3}{32})\),能过 代码 #include <c ...

  7. ElasticSearch实战——.Net Core中的应用

    dll引用: NLog.Targets.ElasticSearch,版本:4.0.0-beta26 Nlog,版本:4.5.0-rc04 Microsoft.Extensions.Configurat ...

  8. Ubuntu14.04下 升级 cmake

    参考: How to install cmake 3.2 on ubuntu 14.04? Ubuntu14.04下升级cmake 1.通过PPA安装: $ sudo apt-get install ...

  9. SAP月结操作讲解

    SAP月结操作讲解 https://wenku.baidu.com/view/ac6fe45d312b3169a451a4b9.html   步聚 操作内容 事务码 是否必须 操作时间 月/年结 1 ...

  10. python学习之re库

    正则表达式库re是非常重要的一个库. 首先正则表达式有两种表示类型,一种是raw string类型(原生字符串类型),也就是我们经常看到的r'  '的写法,另一种是不带r的写法,称为string类型. ...