日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python爬虫xpath详解

發布時間:2025/1/21 python 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python爬虫xpath详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、xpath介紹

二、安裝lxml

三、xpath解析原理

四、實例化一個etree對象

五、xpath表達式

六、爬蟲實戰


一、xpath介紹

xpath是一門在 XML 文檔中查找信息的語言。最初是用來搜尋 XML 文檔的,但同樣適用于 HTML 文檔的搜索。所以在做爬蟲時完全可以使用 XPath 做相應的信息抽取。

二、安裝lxml

lxml是Python的一個第三方解析庫,支持HTML和XML解析,而且效率非常高,彌補了Python自帶的xml標準庫在XML解析方面的不足。

由于是第三方庫,所以在使用 lxml 之前需要先安裝:pip install lxml

三、xpath解析原理

1.實例化一個etree的對象,且需要將被解析的頁面源碼數據加載到該對象中。

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

四、實例化一個etree對象

?1.將本地的html文檔中的源碼數據加載到etree對象中:
? ? ? ? etree.parse(filePath)
?2.可以將從互聯網上獲取的源碼數據加載到該對象中
? ? ? ? etree.HTML('page_text')

3.xpath('xpath表達式')

五、xpath表達式

  • /:表示的是從根節點開始定位。表示的是一個層級。
  • ?//:表示的是多個層級。可以表示從任意位置開始定位。
  • ?屬性定位://div[@class='zhang'] tag[@attrName="attrValue"]
  • ?索引定位://div[@class="zhang"]/p[3] 索引是從1開始的。
  • ? 取文本:/text() 獲取的是標簽中直系的文本內容、//text() 標簽中非直系的文本內容(所有的文本內容)
  • ? 取屬性:?/@attrName ? ? ==>img/src

六、爬蟲實戰

爬取二手房信息

import requests from lxml import etree# 使用xpath 爬取二手房信息headers = {'User-Agent' :'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36' } url = 'https://bj.58.com/ershoufang/{0}/?PGTID=0d30000c-0000-1bdc-b1e5-d9efea8142e9&ClickID=1' fp = open('58二手房.txt','w',encoding='utf-8') for page in range(1,6):page = str(page)new_url = url.format(page)page_text = requests.get(url=new_url,headers=headers).texttree = etree.HTML(page_text)div_list = tree.xpath('//section[@class="list"]/div')for div in div_list:title = div.xpath('./a//h3/@title')[0]roomsAndHalls = div.xpath('./a//div[@class="property-content-info"]//span/text()')address = div.xpath('./a//div[@class="property-content-info property-content-info-comm"]//span/text()')house_year = div.xpath('./a//span[@class="property-content-info-tag"]/text()')total_price = div.xpath('./a//p[@class="property-price-total"]//span/text()')total_area = div.xpath('./a//p[@class="property-price-average"]//text()')roomsAndHalls = ''.join(roomsAndHalls)address = ''.join(address)house_year = ''.join(house_year)total_price = ''.join(total_price)total_area = ''.join(total_area)# print(title)# print(''.join(roomsAndHalls))# print(''.join(address))# print(''.join(house_year))print(title+'======>'+roomsAndHalls+'======>'+address+'======>'+house_year+'======>'+total_price+'======>'+total_area)fp.write(title+'======>'+roomsAndHalls+'======>'+address+'======>'+house_year+'======>'+total_price+'======>'+total_area+'\n')

其實xpath很簡單,只要把表達式理解對就沒啥大問題。詳細代碼:爬蟲源碼

總結

以上是生活随笔為你收集整理的Python爬虫xpath详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。