gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

python實例詳解之xpath解析

本篇文章給大家帶來了關于python的相關知識,其中主要介紹了xpath的相關問題,XPath,全稱XML Path Language,即XML路徑語言,它是一門在XML文檔中查找信息的語言,希望對大家有幫助。

python實例詳解之xpath解析

推薦學習:python教程

XPath,全稱XML Path Language,即XML路徑語言,它是一門在XML文檔中查找信息的語言,它最初是用來搜尋XML文檔的,但是它同樣適用于HTML文檔的搜索

XPath的選擇功能十分強大,它提供了非常簡明的路徑選擇表達式,另外,它還提供了超過100個內建函數,用于字符串、數值、時間的匹配以及節點、序列的處理等,幾乎所有我們想要定位的節點,都可以用XPath來選擇

xpath解析原理:

  • 實現標簽的定位:實例化一個etree的對象,且需要將被解析的頁面源碼數據加載到該對象中。

  • 調用etree對象中的xpath方法結合著xpath表達式實現標簽的定位和內容的捕獲。

環境的安裝

pip install lxml

lxml是python的一個解析庫,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高

如何實例化一個etree對象

1.將本地的html文檔中的源碼數據加載到etree對象中:

etree. parse(filePath)#你的文件路徑

2.可以將從互聯網上獲取的源碼數據加載到該對象中

etree.HtML('page_ text')#page_ text互聯網中響應的數據

xpath 表達式

表達式 描述
nodename 選取此節點的所有子節點
/ 表示的是從根節點開始定位。表示的是一個層級。
// 表示的是多個層級??梢员硎緩娜我馕恢瞄_始定位。
. 選取當前節點
選取當前節點的父節點
@ 選取屬性
* 通配符,選擇所有元素節點與元素名
@* 選取所有屬性
[@attrib] 選取具有給定屬性的所有元素
[@attrib=‘value’] 選取給定屬性具有給定值的所有元素
[tag] 選取所有具有指定元素的直接子節點
[tag=‘text’] 選取所有具有指定元素并且文本內容是text節點

對上面表達式的實例詳解

這是一個HTML的文檔

<html lang="en"><head> 	<meta charset="UTF-8" /> 	<title>測試bs4</title></head><body> 	<p> 		<p>百里守約</p> 	</p> 	<p class="song"> 		<p>李清照</p> 		<p>王安石</p> 		<p>蘇軾</p> 		<p>柳宗元</p> 		<a href="http://www.song.com/" title="趙匡胤" target="_self"> 			<span>this is span</span> 		宋朝是最強大的王朝,不是軍隊的強大,而是經濟很強大,國民都很有錢</a> 		<a href="" class="du">總為浮云能蔽日,長安不見使人愁</a> 		<img src="http://www.baidu.com/meinv.jpg" alt="" /> 	</p> 	<p class="tang"> 		<ul> 			<li><a href="http://www.baidu.com" title="qing">清明時節雨紛紛,路上行人欲斷魂,借問酒家何處有,牧童遙指杏花村</a></li> 			<li><a href="http://www.163.com" title="qin">秦時明月漢時關,萬里長征人未還,但使龍城飛將在,不教胡馬度陰山</a></li> 			<li><a href="http://www.126.com" alt="qi">岐王宅里尋常見,崔九堂前幾度聞,正是江南好風景,落花時節又逢君</a></li> 			<li><a href="http://www.sina.com" class="du">杜甫</a></li> 			<li><a href="http://www.dudu.com" class="du">杜牧</a></li> 			<li><b>杜小月</b></li> 			<li><i>度蜜月</i></li> 			<li><a href="http://www.haha.com" id="feng">鳳凰臺上鳳凰游,鳳去臺空江自流,吳宮花草埋幽徑,晉代衣冠成古丘</a></li> 		</ul> 	</p></body></html>

從瀏覽器中打開是這樣的
python實例詳解之xpath解析
為了方便直觀,我們對寫個HTML文件進行本地讀取進行測試

子節點和子孫節點的定位 / 和 //

先來看子節點和子孫節點,我們從上往下找p這個節點,可以看到p的父節點是body,body父節點是html
python實例詳解之xpath解析
定位到這個HTML的p對象中,看上面html源碼,可以知道有三個p對象
python實例詳解之xpath解析python實例詳解之xpath解析python實例詳解之xpath解析
我們通過三種不同的方法來輸出這個節點的信息,可以看到輸出的是三個一樣的Element,也就是這三種方法實現的功能是一樣的。

import requestsfrom lxml import etree tree = etree.parse('test.html')r1=tree.xpath('/html/body/p')	#直接從上往下挨著找節點r2=tree.xpath('/html//p')#跳躍了一個節點來找到這個p節點的對象r3=tree.xpath('//p')##跳躍上面所有節點來尋找p節點的對象r1,r2,r3>>([<Element p at 0x19d44765108>,   <Element p at 0x19d447658c8>,   <Element p at 0x19d44765588>],     [<Element p at 0x19d44765108>,   <Element p at 0x19d447658c8>,   <Element p at 0x19d44765588>],     [<Element p at 0x19d44765108>,   <Element p at 0x19d447658c8>,   <Element p at 0x19d44765588>])

屬性定位

如果我只想要p里面song這一個標簽,就可以對其屬性定位
python實例詳解之xpath解析
當然返回的還是一個element

r4=tree.xpath('//p[@class="song"]')r4>>>[<Element p at 0x19d447658c8>]

索引定位

如果我只想獲得song里面的蘇軾的這個標簽
我們找到了song,/p可以返回里面的所有標簽,

tree.xpath('//p[@class="song"]/p')>>[<Element p at 0x19d4469a648>,  <Element p at 0x19d4469a4c8>,  <Element p at 0x19d4469af88>,  <Element p at 0x19d4469a148>]

這個單獨返回的蘇軾的p標簽,要注意的是這里的索引不是從0開始的,而是1

tree.xpath('//p[@class="song"]/p[3]')[<Element p at 0x19d4469af88>]

取文本

比如我想取杜牧這個文本內容
python實例詳解之xpath解析
和上面一樣,我們要定位到杜牧的這個a標簽,首先要找到他的上一級 li ,這是第五個 li 里面的a所以就有了下面的寫法,text()是把element轉化為文本,當然上面的在后面加個text()都可以展示文本內容。

tree.xpath('//p[@class="tang"]//li[5]/a/text()')>>['杜牧']

可以看到這個返回的是一個列表,如果我們想取里面的字符串,可以這樣

tree.xpath('//p[@class="tang"]//li[5]/a/text()')[0]杜牧

看一個更直接的,//li 直接定位到 li這個標簽,//text()直接將這個標簽下的文本提取出來。但要注意,這樣會把所有的li標簽下面的文本提取出來,有時候你并不想要的文本也會提取出來,所以最好還是寫詳細一點,如具體到哪個p里的li。

tree.xpath('//li//text()')['清明時節雨紛紛,路上行人欲斷魂,借問酒家何處有,牧童遙指杏花村',  '秦時明月漢時關,萬里長征人未還,但使龍城飛將在,不教胡馬度陰山',  '岐王宅里尋常見,崔九堂前幾度聞,正是江南好風景,落花時節又逢君',  '杜甫',  '杜牧',  '杜小月',  '度蜜月',  '鳳凰臺上鳳凰游,鳳去臺空江自流,吳宮花草埋幽徑,晉代衣冠成古丘']

取屬性

比如我想取下面這個屬性
python實例詳解之xpath解析
可以直接用@取屬性

tree.xpath('//p[@class="song"]/img/@src')['http://www.baidu.com/meinv.jpg']

或者如果我想取所有的href這個屬性,可以看到tang和song的所有href屬性

tree.xpath('//@href')['http://www.song.com/',  '',  'http://www.baidu.com',  'http://www.163.com',  'http://www.126.com',  'http://www.sina.com',  'http://www.dudu.com',  'http://www.haha.com']

爬蟲實戰之58同城房源信息

#導入必要的庫import requestsfrom lxml import etree#URL就是網址,headers看圖一url='https://sh.58.com/ershoufang/'headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.7 Safari/537.36'}#對網站發起請求page_test=requests.get(url=url,headers=headers).text# 這里是將從互聯網上獲取的源碼數據加載到該對象中tree=etree.HTML(page_test)#先看圖二的解釋,這里li有多個,所里返回的li_list是一個列表li_list=tree.xpath('//ul[@class="house-list-wrap"]/li')#這里我們打開一個58.txt文件來保存我們的信息fp=open('58.txt','w',encoding='utf-8')#li遍歷li_listfor li in li_list: 	#這里 ./是對前面li的繼承,相當于li/p...     title=li.xpath('./p[2]/h2/a/text()')[0]     print(title+'n')     #把文件寫入文件     fp.write(title+'n')fp.close()

圖一:
python實例詳解之xpath解析
圖二:.
這里我們要提取所有的房源信息,可以看到每個小節點的上一個節點都是一樣的,我們要提取的是h2節點a里的房源信息,看圖三
python實例詳解之xpath解析
這里每個 /li 節點里面的子節點都是一樣的,所以我們可以先找到所有的li節點,再往下找我們想要的信息

python實例詳解之xpath解析

推薦學習:python教程

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
亚洲激情免费视频| 日本高清久久久| 久久免费一级片| 国产九九九视频| 黄色小视频免费网站| 福利片一区二区三区| 91丨九色丨蝌蚪| 色中文字幕在线观看| 日韩视频在线观看一区二区三区| 亚洲综合欧美激情| 99九九精品视频| 青青草免费在线视频观看| 97超碰免费观看| 国产精品又粗又长| 免费看又黄又无码的网站| 免费高清在线观看免费| 99热这里只有精品在线播放| 亚洲国产日韩欧美在线观看| 亚洲色成人www永久在线观看| 日本黄大片在线观看| 2018国产在线| 青青在线视频免费| 亚洲女人在线观看| 亚洲一二三不卡| 中文字幕乱码人妻综合二区三区| 成人一级片网站| 一级黄色在线播放| 青青草综合在线| 一本色道无码道dvd在线观看| 欧美女同在线观看| 青青草视频在线视频| 日本三级免费观看| 精品国产乱码久久久久久1区二区| 成人在线播放网址| 色悠悠久久综合网| 777精品久无码人妻蜜桃| 羞羞的视频在线| 337p粉嫩大胆噜噜噜鲁| www激情五月| 成人在线激情网| 日本黄大片在线观看| 久久6免费视频| 少妇人妻互换不带套| 777久久精品一区二区三区无码| 久久久久久久少妇| 日本午夜激情视频| 国产一区一区三区| 亚洲国产日韩欧美在线观看| 亚洲美免无码中文字幕在线| 久久久国产精华液999999 | 日韩视频免费在线播放| 丁香婷婷综合激情| 久久久成人精品一区二区三区 | 精品久久久久久无码中文野结衣| 亚欧美在线观看| 干日本少妇首页| 国产极品尤物在线| 国产日韩欧美精品在线观看| 五月天色婷婷综合| 国产四区在线观看| 久久精品在线免费视频| 精产国品一二三区| 伊人成人免费视频| 日日噜噜夜夜狠狠久久丁香五月| 一区二区在线免费看| 9久久婷婷国产综合精品性色 | 欧美日韩一区二区在线免费观看| 久久男人资源站| 日韩伦理在线免费观看| av在线播放天堂| 丰满少妇被猛烈进入高清播放| 霍思燕三级露全乳照| 黄色www网站| 一级在线免费视频| 亚洲精品20p| 久久观看最新视频| 九一国产精品视频| 男人舔女人下面高潮视频| 羞羞的视频在线| 自拍偷拍视频在线| 男人添女人下面高潮视频| 日韩avxxx| www.这里只有精品| 午夜久久久久久久久久久| 国产色一区二区三区| 99色精品视频| 伊人五月天婷婷| 91视频 -- 69xx| 天天久久综合网| 国产h视频在线播放| 亚洲免费av一区二区三区| 天天av天天操| 久久精品免费一区二区| 自拍偷拍一区二区三区四区| 日韩精品一区二区三区电影| 99热成人精品热久久66| 制服丝袜中文字幕第一页| 日本熟妇人妻xxxx| 第一区免费在线观看| 69sex久久精品国产麻豆| 91插插插插插插插插| 欧美高清中文字幕| 国产永久免费网站| 欧美综合在线观看视频| 丰满人妻一区二区三区53号 | 国产黑丝在线视频| 日韩一级免费在线观看| 一卡二卡三卡视频| 最近中文字幕免费mv| 蜜臀av免费观看| 国产一区二区在线视频播放| 人人爽人人爽av| 黄色片在线免费| 欧美视频在线播放一区| 福利网在线观看| 国产成人美女视频| 亚欧在线免费观看| 国产精品亚洲a| 成人中文字幕在线播放| www.欧美黄色| 特级西西人体www高清大胆| 在线观看免费不卡av| 精品久久久久久久免费人妻| 青春草国产视频| 女同性恋一区二区| 久久最新免费视频| 免费观看国产视频在线| 中文字幕乱码免费| 好吊色视频988gao在线观看| 日本丰满大乳奶| 97在线免费视频观看| 毛片av在线播放| 一本久道高清无码视频| 999久久欧美人妻一区二区| 999久久欧美人妻一区二区| 天天想你在线观看完整版电影免费| 性鲍视频在线观看| 亚洲小说欧美另类激情| 一区二区三区四区免费观看| 一区二区三区四区免费观看| 日本香蕉视频在线观看| 欧美激情 国产精品| 毛片一区二区三区四区| 杨幂毛片午夜性生毛片| 国产自偷自偷免费一区 | 欧美性视频在线播放| 国内外成人激情免费视频| 欧日韩免费视频| 999精品网站| 伊人成人免费视频| 日本熟妇人妻xxxx| 爱情岛论坛成人| 欧美h视频在线观看| 国产精品成人久久电影| 黄色免费观看视频网站| 中日韩av在线播放| 高清欧美精品xxxxx| 第四色婷婷基地| 日本一级黄视频| 亚洲欧美激情网| 日韩激情视频一区二区| 国产精品人人爽人人爽| 热久久最新网址| 精品999在线| 僵尸世界大战2 在线播放| 九九精品久久久| 欧美一区二区中文字幕| 亚洲欧美日韩三级| 黄色免费观看视频网站| 992kp免费看片| 日韩中文字幕组| 国产 日韩 亚洲 欧美| 欧美日韩精品区别| 女人另类性混交zo| 免费拍拍拍网站| 久久国产精品免费观看| 9l视频白拍9色9l视频| 日韩欧美亚洲天堂| 成人免费看片'免费看| 日本网站在线看| 日韩肉感妇bbwbbwbbw| 国产二区视频在线| 欧美日韩中文字幕在线播放| 在线免费av播放| 天天天干夜夜夜操| av免费播放网址| 欧美视频在线免费播放| 九九久久九九久久| 亚洲欧美日韩不卡| 亚洲热在线视频| 天天操夜夜操很很操| а 天堂 在线| 久久久久久久久久一区| 国产精品久久a| 中文字幕av不卡在线| 中文字幕国内自拍| 亚洲一级免费观看| 一区二区三区四区毛片| 午夜xxxxx| 成人午夜免费在线视频|