本文导读目录:
2、win7电脑映射网络驱动器的方法有哪些(win7电脑映射网络驱动器的方法在哪)
如何在python中使用xpath?什么是Xpath及其用法
如何在python中使用xpath
在进行网页Zhuā取的时候,分析定位html节点Shì获Qǔ抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结Gòu的,当然也能分析html结构),利用其lxml.html的xpath对html进行分析,获取抓取信息。首先,我们需要安装一个支持xpath的python库。目前在libxml的网站上被推荐的pythonbinding是lxml,也有beautifulsoup,不嫌Má烦的话还可以Zì己用正则表达式去构建,本文以lxml为例讲解。假设有如Xià的HTML文档:《html》《body》《form》《divid=’leftmenu’》《h》text《/h》《ulid=’china’》《!--firstlocation--》《li》...《/li》《li》...《/li》......《/ul》《ulid=’england’》《!--secondlocation--》《li》...《/li》《li》...《/li》......《/ul》《/div》《/form》《/body》《/html》直接使用lxml处理:importcodecsfromlxmlimportetreef=codecs.open(“ceshi.html“,“r“,“utf-“)content=f.read()f.close()tree=etree.HTML(content)etree提供了HTML这个解析函数,现在我们可以直接对HTMLShǐ用xpath了,是不是有点小激动,现在就Cháng试下吧。在使用xpath之前我Mén先来看看作为对照的jQueryHéRE。在jQuery里要处理这种东西就很简单,特别是假如那Gèul节点有id的话(比如是《ulid=’china’》:$(“#china“).each(function(){...});具体到此处是:$(“#leftmenu“).children(“h:contains(’text’)“).next(“ul“).each(function(){...});找到idWèileftmenu的节点,在其Xià找到一个内Róng包含为”text”的h节点,再取其接下来的一个ul节Diǎn。在python里要是用RE来处理就略麻烦一些:block_pattern=re.pile(u“《h》Dàng案《/h》(.*?)《h》“,re.I|re.S)m=block_pattern.findall(content)item_pattern=re.pile(u“《li》(.*?)《/li》“,re.I|re.S)items=item_pattern.findall(m)foriinitems:printi那么用xpath要怎么做呢?其实跟jQuery是差不多的:nodes=tree.xpath(“/descendant::ul[id=’china’]“)当然,现在没有id的话也就只能用类似于jQuery的方法了。完整Dexpath应该是这样写的(注意,原文件中的TAG有大小写的情况,但是在XPATH里只能用小写:nodes=tree.xpath(u“/html/body/form/div[id=’leftmenu’]/h[text()=’text’]/following-sibling::ul“)更简单的方法就是像jQuery那样直接根据id定位:nodes=tree.xpath(u“//div[id=’leftmenu’]/h[text()=’text’]/following-sibling::ul“)这两种方法返回的结果中,nodes就是那个“text”Deh节点后面紧跟的第一个ul节点,ZhèYàng就Kè以列出后面所有的ul节点内容了。如果ul节点下Miàn还有其他的节点,我们要找到更深节点的内容,如下的循环Jiù是把Zhè些节点的文本内容列出:nodes=nodes.xpath(“li/a“)forninnodes:printn.text对比三种方法应该可以看出xpath和jQuery对于页面的解析都是基于XML的语义进行,而RE则纯粹是基于plaintext。RE对付简单的页面是没有问题,如果页面结构复杂度较高的时候(比RúYī堆的DIV来回嵌套之类,Shè计一个恰当的REpattern可能会远比写Yī个xpath要复杂。特别是目前主流的基于CSS的Yè面设计方式,其中大部分关键节点都会有id――对于使用jQuery的页面来说则更是如此,这时xpath相比RE就Yǒu了Jué定性的优势。附录:基本XPATH语法介绍,详细请参考XPath的官方文DàngXPATH基Běn上是用一种类似Mù录树的方Fǎ来描述在XML文档中的路径。比如用“/”来作为上Xià层级间的分隔。第一个“/”表示文档的根节点(注意,不是指文档ZuìWài层的tag节点,而是指文档Běn身2024年12月三星s6888(诺基亚 710)。比如对于一个HTML文件来说,最外层的节点应该是”/html”。同样的,“..”和“.”分别被用Lái表示父Jié点和本节点。XPATH返回的不一定就是Wéi一De节点,而是符合条件的所有节点。比如ZàiHTML文档Lǐ使用“/html/head/scrpt”就会把head里的所有script节点都取出来。为了缩小定位范围,往往还需要增加Guò滤条件。过滤De方法就是用“[”“]”把过滤条件加上。比如在HTML文档里使用“/html/body/div[id=’main’]”,即Kè取出body里id为main的div节点。其中id表示属性id,类似De还可以使用如name,value,href,src,class….而Hán数text()的意思则是取得节点包含的文Běn。比Rú:《div》hello《p》world《/p》《/div》中,用”div[text()=’hello’]“即可取得这个div,而world则是p的text()。函数position()的意思是Qǔ得节点的位置。比如“li[position()=]”表示取得第二个li节点,它也可以被省略为“li”。不过要注意的是数字定位和过滤Tiáo件的顺序。比如“ul/li[name=’hello’]”表示取ul下第五项li,并且其name必须是hello,否则返回空。而如果用“ul/li[name=’hello’]”的意思就不同,它表示Xún找ul下第五个name为”hello“的li节点。此外,“*”可以代替Suǒ有的节点名,比如Yòng”/html/body/*/span”可以取出body下第二JíDe所有span,ér不管它上一级是div还是p或是其它Shí么东东。而“descendant::”前缀可以指代任意多层的中间节点,它也可以被省略成一个“/”。比如在整个HTML文档中查找id为“leftmenu”的div,可Yǐ用“/descendant::div[id=’leftmenu’]”,也可以简单地使用“//div[id=’leftmenu’]”。Zhì于“following-sibling::”前缀就如其名SuǒShuō,表示同一层的下一Gè节点。”following-sibling::*”就是任意下一个节点,而“following-sibling::ul”就是下一个ul节点。
诺基亚 710win电脑映射网络Qū动器的方法有哪些(win电脑Yìng射Wǎng络驱动器的方法在哪)
2024年12月三星s6888(诺基亚 710)本文为大家介绍win电脑映射网络Qū动器的方法有哪些(win电脑映射网络驱动器的方法在哪),下面和小编一起看看详细内容吧。
很多用户在平时工作的时候经常需要访问Jú域网的文件夹,Dàn是每次都要连接网络很麻烦,所以我们可能需要设Zhì一个映射的网络驱动器。win系统如何映射网盘?今天
分享给大家win系统Yìng射网盘的操作方法。
诺基亚 710win兼容性怎么设置(win兼容性设置灰色)
驱动程序不兼容,那么你可以更新驱动程序回退驱动程序或卸Zài后重新安装驱动程序2024年12月三星s6888(诺基亚 710)。
PS:以Xià操Zuò如嫌麻烦,也可以借助驱动精灵等第三方驱动程序管Lǐ平台。
三星s6888的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于诺基亚 710、三星s6888的信息别忘了在本站进行查找喔。