国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python基于lxml模塊解析html獲取頁(yè)面內(nèi)所有葉子節(jié)點(diǎn)xpath路徑功能示

2020-02-23 00:08:13
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Python基于lxml模塊解析html獲取頁(yè)面內(nèi)所有葉子節(jié)點(diǎn)xpath路徑功能。分享給大家供大家參考,具體如下:

因?yàn)樾枰褂萌~子節(jié)點(diǎn)的路徑來(lái)作為特征,但是原始的lxml模塊解析之后得到的卻是整個(gè)頁(yè)面中所有節(jié)點(diǎn)的xpath路徑,不是我們真正想要的形式,所以就要進(jìn)行相關(guān)的處理才行了,差了很多網(wǎng)上的博客和文檔也沒(méi)有找到一個(gè)是關(guān)于輸出html中全部葉子節(jié)點(diǎn)的API接口或者函數(shù),也可能是自己沒(méi)有那份耐心,沒(méi)有找到合適的資源,只好放棄了尋找,但是這并不說(shuō)明沒(méi)有其他的方法了,在對(duì)頁(yè)面全部節(jié)點(diǎn)的xpath輸出之后觀察得到的結(jié)果就是:

1.路徑之間存在包含性

2.葉子節(jié)點(diǎn)的路徑必然包含上一個(gè)葉子節(jié)點(diǎn)路徑到下一個(gè)葉子節(jié)點(diǎn)路徑之間的路徑

3.所有的葉子節(jié)點(diǎn)均不存在包含性

基于這些觀察就可以實(shí)踐了,我采用的方法是,設(shè)置一個(gè)標(biāo)志位,如果當(dāng)前路徑被下一條路徑包含的話就把下標(biāo)加1處理,直到遇上不包含的情況是這一條路徑就是一條葉子節(jié)點(diǎn)路徑,加入結(jié)果列表即可,經(jīng)檢驗(yàn)和原始路徑列表對(duì)比后,結(jié)果路徑列表均不存在包含性,暫可認(rèn)為均為葉子節(jié)點(diǎn)的路徑,不敢確定的說(shuō)是因?yàn)椋壕箾](méi)有大量做實(shí)驗(yàn)觀察是否有另類,不過(guò)方法是可行的,下面是具體實(shí)現(xiàn):

#!usr/bin/env python#encoding:utf-8'''''__author__:沂水寒城功能:得到頁(yè)面的葉子節(jié)點(diǎn)的xpath'''def get_leaf_node_xpath(one_page_xpath):  '''''  輸入:一個(gè)頁(yè)面的原始xpath路徑列表  輸出:只包含頁(yè)面的葉子節(jié)點(diǎn)的xpath列表  '''  one_page_xpath.append('0')  leaf_node_xpath_list=[]  for i in range(len(one_page_xpath)-1):    j=i+1    one_xpath=one_page_xpath[i]    two_xpath=one_page_xpath[j]    if one_xpath in two_xpath:      one_xpath=two_xpath      two_xpath=one_page_xpath[j+1]    else:      leaf_node_xpath_list.append(one_xpath)  return leaf_node_xpath_listif __name__ == '__main__':  with open('baidu.txt') as f:    html=f.read()  htree, one_page_xpath=get_clean_allnodes_xpath(html)  leaf_node_xpath_list=get_leaf_node_xpath(one_page_xpath)  print leaf_node_xpath_list  with open('data/dom_leaf_xpath/original_xpath.txt', 'w') as f1:    for one_line in one_page_xpath:      f1.write(one_line.strip()+'/n')  with open('data/dom_leaf_xpath/leaf_xpath.txt', 'w') as f2:    for one_line in leaf_node_xpath_list:      f2.write(one_line.strip()+'/n')

打開(kāi)保存的文件內(nèi)容為:

original_xpath.txt內(nèi)容為:

/html
/html/head
/html/head/meta[1]
/html/head/meta[2]
/html/head/meta[3]
/html/head/meta[4]
/html/head/title
/html/body
/html/body/p
/html/body/p/comment()[1]
/html/body/p/comment()[2]
/html/body/p/comment()[3]
/html/body/p/meta
/html/body/div[1]
/html/body/div[1]/div[1]

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 维西| 亳州市| 曲麻莱县| 天长市| 本溪市| 砚山县| 会泽县| 封丘县| 九龙城区| 潍坊市| 泌阳县| 德州市| 岑溪市| 攀枝花市| 讷河市| 绥棱县| 临江市| 鞍山市| 手机| 忻州市| 嵩明县| 长泰县| 彭水| 淄博市| 新晃| 苏尼特左旗| 栖霞市| 宁阳县| 子长县| 饶河县| 华池县| 卫辉市| 博兴县| 溧阳市| 宽甸| 四子王旗| 定陶县| 攀枝花市| 临漳县| 宜君县| 大同市|