python語言 Xpath 票牛網演出爬蟲

2021-09-17 21:36:57 字數 2670 閱讀 9201

作業要求:票牛網

目標內容:爬取演出資訊,包括演出名稱、詳細**、時間、位址、票價等內容

任務要求:使用xpath完成,結果儲存到csv檔案中

涉及知識點:requests獲取網頁源**、xpath獲取內容、python讀寫csv檔案

先說說xpath與上一次的正規表示式有何區別?

通過上一次實驗知道通過用正規表示式來提取資訊,經常會出現不明原因的無法提取想要內容的情況,即有時無法直接獲取資訊。最後即便絞盡腦汁終於把想要的內容提取了出來,但發現浪費了太多的時間。

但我們需要尋找的內容越複雜,構造正規表示式所需要花費的時間也就越多,而xpath卻不一樣,構造不同的xpath,所需要花費的時間幾乎是一樣的,所以用xpath從html源**中提取資訊可以大大提高效率。一句話就是,xpath是直接找位址

那麼在構造xpath語句的過程中,我們需要尋找「標誌性」的標籤。可以直接使用瀏覽器的開發者工具來協助分析網頁結構,可以提高分析效率,如下圖

即可使用xpath

步驟如下

*第一步

import lxml.html

import requests

path=''

html=requests.get(path).content.decode('utf-8') #獲取源**

selector = lxml.html.fromstring(html) #通過.fromstring解析html

「網頁源**」利用requests庫來獲取

第二步:

name = selector.xpath('/html/body/div[2]/div[1]/div[4]/ul/li/div/div[1]/a/@title')

href = selector.xpath('/html/body/div[2]/div[1]/div[4]/ul/li/div/div[1]/a/@href')

time = selector.xpath('/html/body/div[2]/div[1]/div[4]/ul/li/div/div[3]/text()')

address = selector.xpath('/html/body/div[2]/div[1]/div[4]/ul/li/div/a/text()')

price = selector.xpath('/html/body/div[2]/div[1]/div[4]/ul/li/div/div[4]/div[1]/div[1]/span[1]/text()')

在copy-xpath後,可以明顯看到沒有text().@title這些東西,但是如果要將它選擇出來就要告訴它,相當於那是乙個盒子,裝了很多東西,你只有明確告訴它,你要的是**(href)還是(title),還是其他的什麼,像標籤裡面的還有記得加@哦。

另外就是我們是想獲取這個網頁的所有演出資訊,如果真實只用拷貝下來的xpath,執行之後,你會發現只獲取了乙個演出資訊,這個大家很快就能發現,然後我們再去看其他演出的xpath,比如我想獲取的第乙個演出和第二個演出的名稱:

第乙個:/html/body/div[2]/div[1]/div[4]/ul/li[1]/div/div[1]/a

第二個:/html/body/div[2]/div[1]/div[4]/ul/li[2]/div/div[1]/a

可以發現只它們之間只有li的下標不一樣,其他的演出類似。為了可以獲取全部的,我們就去掉使它們不同的li的下標,就能達到理想目的。反正就是仔細觀察咯,都挺簡單。其他的時間什麼的類似操作

第三步:

content_list =        #存放演出資訊

for i in range(len(name)):

dict =

print(content_list)

這裡就是把它放到字典裡面,很以前一樣

第四步:

題目要求需存放在.csv檔案中,那麼這裡我們要用到csv庫,在.py的同乙個目錄下建立***.csv檔案

with open('***.csv','w') as csvfile:

csvwriter = csv.writer(csvfile)

list = ['演出名稱','詳情頁**','演出時間','演出地點','票價'] #給.csv的第一行明確列資訊

csvwriter.writerow(list)

for i in range(len(content_list)):

csvwriter.writerow(content_list[i].values()) #獲取值存入

csvfile.close() #注意開啟檔案就需要隨時關閉

執行結果:

注意:這裡寫的都是只能爬取靜態的頁面,動態是需要跟蹤,下次說咯

xpath語言使用

xpath是一門語言,可以在xml文件中查詢資訊,在爬蟲中比正規表示式方便很多 xpath是屬於lxml庫,安裝xpath首先需要安裝python第三方庫lxml庫檔案 from lxml import etree selector etree.html html1 html1是頁面源 select...

python爬蟲XPath學習

xpath簡介和基本使用 1.前言 之前爬蟲的時候沒有用過xpath,就是沒用過lxml這個包,遇到json格式網頁我用的json.loads html格式用的beautifulsoup裡面有find和find all函式查詢標籤之類的。但是xpath在爬蟲裡面也算乙個比較重要的工具,當然要學習啦。...

Python筆記 XPath定位

xpath為xml path language,它是一種用來確定xml文件中某部分位置的語言。可以使用dump hierarchy 來獲取介面屬性 從中可以看到介面為xml。可以直接使用weditor獲取 xpath的值 從中可以看到xpath為 text 我的 import uiautomator...