XPath

作者: ericblue | 来源:发表于2018-10-07 17:04 被阅读0次

维基百科定义:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointerXSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言
问题学习:从定义中看到XPath是XML路径语言,用来寻找基于树状结构的XML文档中某部分位置的查询语言,那么是否可以用于网页类的HTML?
答案肯定是,通过查询XML与HTML的区别,找到一个比较好的回答如下:
首先要知道SGML(标准通用标记语言),SGML是国际认证的定义电子文档和内容描述的标准,之后有人想在互联网上使用SGML,但其过于庞大复杂,所以做了简化,也就是XML(可扩展标记语言) , XML的强大在于其只有句法规则其他都是随便修改变更的,主要用来储存数据,作为数据的一种格式,后来在页面上直接承载内容让大家在网上看见给XML增加了一个DTD定义文档,就是增加了规定规则,之后形成HTML,HTML 是一种语法形式比较松散的标记语言,语法要求也不严格。比如大小可以混用,属性值随便你加不加引号,单引号还是双引号也随便你,标签也可以不闭合。HTML 标准的制定者 W3C把 XML 的语法形式往 HTML 上一套,出现了 XHTML,所以可以把 XHTML 理解为 HTML 的严格语法形式,除此之外,其它方面基本一样。所以出现这样生成关系SGML>XML>HTML>XHTML。
XHTML 的一些强制的要求:
1)必须包含一个文件头声明 <!DOCTYPE>
2)所有元素名必须小写
3)所有空元素必须关闭
4)所有属性名必须小写
5)所有属性值必须加引号
6)所有布尔值属性必须加上属性值
下图转载来自于文章HTML、XML、XHTML和HTML5的异同


XPth关键概念知识:
XPath 节点
XPath 语法
XPth在Scrapy中调试:
(py3env)  MacBook~$ ~/python/tutorial/MySpider $ scrapy shell https://www.cnbeta.com/articles/773891.htm
2018-10-01 15:09:52 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: MySpider)
2018-10-01 15:09:52 [scrapy.utils.log] INFO: Versions: lxml 4.2.2.0, libxml2 2.9.8, cssselect 1.0.3, parsel 1.4.0, w3lib 1.19.0, Twisted 18.4.0, Python 3.6.5 (default, Apr 25 2018, 14:26:36) - [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)], pyOpenSSL 18.0.0 (OpenSSL 1.1.0h  27 Mar 2018), cryptography 2.2.2, Platform Darwin-17.7.0-x86_64-i386-64bit
2018-10-01 15:09:52 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'MySpider', 'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter', 'LOGSTATS_INTERVAL': 0, 'NEWSPIDER_MODULE': 'MySpider.spiders', 'SPIDER_MODULES': ['MySpider.spiders']}
2018-10-01 15:09:52 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.corestats.CoreStats',
 'scrapy.extensions.telnet.TelnetConsole',
 'scrapy.extensions.memusage.MemoryUsage']
2018-10-01 15:09:52 [scrapy.middleware] INFO: Enabled downloader middlewares:
['scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware',
 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware',
 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware',
 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware',
 'scrapy.downloadermiddlewares.retry.RetryMiddleware',
 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware',
 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware',
 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware',
 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware',
 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware',
 'scrapy.downloadermiddlewares.stats.DownloaderStats']
2018-10-01 15:09:52 [scrapy.middleware] INFO: Enabled spider middlewares:
['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware',
 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware',
 'scrapy.spidermiddlewares.referer.RefererMiddleware',
 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware',
 'scrapy.spidermiddlewares.depth.DepthMiddleware']
2018-10-01 15:09:52 [scrapy.middleware] INFO: Enabled item pipelines:
[]
2018-10-01 15:09:52 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
2018-10-01 15:09:52 [scrapy.core.engine] INFO: Spider opened
2018-10-01 15:09:53 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.cnbeta.com/articles/773891.htm> (referer: None)
2018-10-01 15:09:54 [py.warnings] WARNING: /usr/local/lib/python3.6/site-packages/IPython/core/interactiveshell.py:728: UserWarning: Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
  warn("Attempting to work in a virtualenv. If you encounter problems, please "

[s] Available Scrapy objects:
[s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
[s]   crawler    <scrapy.crawler.Crawler object at 0x1036aeda0>
[s]   item       {}
[s]   request    <GET https://www.cnbeta.com/articles/773891.htm>
[s]   response   <200 https://www.cnbeta.com/articles/773891.htm>
[s]   settings   <scrapy.settings.Settings object at 0x1044b39b0>
[s]   spider     <DefaultSpider 'default' at 0x1047b4f98>
[s] Useful shortcuts:
[s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
[s]   fetch(req)                  Fetch a scrapy.Request and update local objects
[s]   shelp()           Shell help (print this help)
[s]   view(response)    View response in a browser
In [1]:title = response.xpath("/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/header/h1/text()")
In [2]:title.extract()
Out[2]: ['Surface Pro 6发布 搭载第八代酷睿处理加入黑色版本']
In [3]: data = response.xpath("/html/body/div[1]/div[1]/div[2]/div[1]/div[1]/header/div/span[1]/text()")
In [4]: data.extract()
Out[4]: ['2018年10月03日 07:20']

相关文章

  • Python解析库lxml与xpath用法总结

    本文主要围绕以xpath和lxml库进行展开: 一、xpath 概念、xpath节点、xpath语法、xpath轴...

  • Python+Selenium之元素定位XPATH

    XPATH简介: 参考网站:W3school selenium之xpath源码 xpath各种实际用法 XPATH...

  • python爬虫之XPath解析

    XPath 简介: XPath 是一门在 XML 文档中查找信息的语言 什么是 XPath? XPath 使用路径...

  • Python(六十八)xpath案例实战

    07_xpath案例实战/01_xpath.py: 07_xpath案例实战/02_xpath.py: 07_xp...

  • 4.xpath和BeautifulSoup4介绍

    xpath语法:http://www.runoob.com/xpath/xpath-syntax.html xpa...

  • 常用的xpath

    xpath的模糊查询 选取同级节点 获取父级节点 xpath定位 列表时间筛选 xpath获取标签 xpath的s...

  • xpath使用笔记

    xpath学习笔记 xpath简介 xpath 用于在XML文档中通过元素和属性进行导航xpath 使用路径表达式...

  • XPath

    XPath 简介 什么是 XPath?XPath 使用路径表达式在 XML 文档中进行导航XPath 包含一个标准...

  • xpath 和 pyquery

    主题: **xpath 和 pyquery ** xpath 选取节点 谓语 通配符 取多个路径 xpath轴 功...

  • 爬虫解析库XPath使用

    爬虫解析库XPath使用 1.XPath简介 XPath 是一门在 XML 文档中查找信息的语言。XPath 用于...

网友评论

      本文标题:XPath

      本文链接:https://www.haomeiwen.com/subject/rjqlaftx.html