XPath

维基百科定义: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']
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,458评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,030评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,879评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,278评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,296评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,019评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,633评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,541评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,068评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,181评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,318评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,991评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,670评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,183评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,302评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,655评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,327评论 2 358

推荐阅读更多精彩内容