一个Python爬虫案例,带你掌握xpath数据解析方法!_python如何获取etree使用xpath的值

63 阅读4分钟

pip install lxml


**如何实例化一个etree对象:**



from lxml import etree


1.将本地的html文件中的远吗数据加载到etree对象中:



etree.parse(filePath)


2.可以将从互联网上获取的原码数据加载到该对象中:



etree.HTML(‘page_text’)


### **xpath(‘xpath表达式’)**


* /:表示的是从根节点开始定位。表示一个层级
* //:表示多个层级。可以表示从任意位置开始定位
* 属性定位://div[@class='song'] tag[@attrName='attrValue']
* 索引定位://div[@class='song']/p[3] 索引从1开始的
* 取文本:


	+ /text()获取的是标签中直系的文本内容
	+ //text()标签中非直系的文本内容(所有文本内容)
* 取属性:/@attrName ==>img/src


### **xpath爬取58二手房实例**


爬取网址


https://xa.58.com/ershoufang/完整代码



from lxml import etree import requests

if name == 'main':     headers = {         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'     }     url = 'xa.58.com/ershoufang/'     page_text = requests.get(url=url,headers=headers).text     tree = etree.HTML(page_text)     div_list = tree.xpath('//section[@class="list"]/div')     fp = open('./58同城二手房.txt','w',encoding='utf-8')     for div in div_list:         title = div.xpath('.//div[@class="property-content-title"]/h3/text()')[0]         print(title)         fp.write(title+'\n'+'\n')



![图片](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/6989260d014e4e28a9d36fa8acfd4ca3~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=AsnXgikMrZkaU0ZrcwG13uqVblc%3D)


### **xpath图片解析下载实例**


爬取网址


https://pic.netbian.com/4kmeinv/完整代码



import requests,os from lxml import etree

if name == 'main':     headers = {         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'     }     url = 'pic.netbian.com/4kmeinv/'     page_text = requests.get(url=url,headers=headers).text     tree = etree.HTML(page_text)     li_list = tree.xpath('//div[@class="slist"]/ul/li/a')     if not os.path.exists('./piclibs'):         os.mkdir('./piclibs')     for li in li_list:         detail_url ='pic.netbian.com' + li.xpath('./img/@src')[0]         detail_name = li.xpath('./img/@alt')[0]+'.jpg'         detail_name = detail_name.encode('iso-8859-1').decode('GBK')         detail_path = './piclibs/' + detail_name         detail_data = requests.get(url=detail_url, headers=headers).content         with open(detail_path,'wb') as fp:             fp.write(detail_data)             print(detail_name,'seccess!!')



![图片](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b8f3a9e7e798475a8b3d30bbf0d223f4~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=EP8rlAHqeApma6zGgwa3UUA%2BurA%3D)


### **xpath爬取全国城市名称实例**


爬取网址 


https://www.aqistudy.cn/historydata/完整代码



import requests from lxml import etree

if name == 'main':     url = 'www.aqistudy.cn/historydata…'     headers = {         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36',     }     page_text = requests.get(url=url,headers=headers).content.decode('utf-8')     tree = etree.HTML(page_text)     #热门城市   //div[@class="bottom"]/ul/li     #全部城市   //div[@class="bottom"]/ul/div[2]/li     a_list = tree.xpath('//div[@class="bottom"]/ul/li | //div[@class="bottom"]/ul/div[2]/li')     fp = open('./citys.txt','w',encoding='utf-8')     i = 0     for a in a_list:         city_name = a.xpath('.//a/text()')[0]         fp.write(city_name+'\t')         i=i+1         if i == 6:             i = 0             fp.write('\n')     print('爬取成功')


![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/a3eda0902a8c4b1594edc0d3cea80ba0~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=k5MBf15AqM3Pvz7bhSsrjHLQ%2FVc%3D)



### **xpath爬取简历模板实例**


爬取网址


https://sc.chinaz.com/jianli/free.html完整代码


如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费**学习**大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。



### 一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。



![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9103a7b79fe649e19554a51da1ab6428~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=Qq1GA0voz64zyNJJ4vMyiSIasIY%3D)

### 二、学习软件



工欲善其必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。



![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/4aa5753c647543fba3b5f07c8a71470a~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=iH342GiPhrevT4YzjoiRZUXiNpY%3D)



### 三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/91e756fb1d664962b2c800c437f7a311~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=b5i3gQZwZ966dlrsheeIOiu0bkg%3D)



### 四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。



![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/f05a109608cf4324bc9c23d77125c3e5~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=27T4uIdHI9ODLRhNI2SMndxN6rk%3D)  

![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/73bdc2cd354a4318a9fc35d8be9df474~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=5XI04ZMiKYZ%2BT%2B5E9lb%2BowTaKsg%3D)



### 四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。



![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/7cbbb66c27174c70a874f495f7a279c5~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=CLanEd3oS0%2BeWzajZy1xZAOZpjY%3D)



### 五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://p9-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/36caa35053484c2392b1a627ff333cdb~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1779883591&x-signature=Z7%2F1O5vHbAYcQJ0v3aOe8IXhDGE%3D)

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!



**了解详情:https://docs.qq.com/doc/DSnl3ZGlhT1RDaVhV**