本文是我在學習過程中記錄學習的點點滴滴,目的是為了學完之后鞏固一下順便也和大家分享一下,日后忘記了也可以方便快速的復習。
使用xpath爬取豬八戒網站數據
- 前言
前言
今天學習的主要是關于Python使用xpath來爬取豬八戒網的網頁知識的理解和應用
#1.獲取首頁數據
#2.使用etree.HTML將首頁HTML字符串解析為一個節點樹對象(類似DOM樹)
#3.使用etree.xpath根據標簽名來定位元素import requests
from lxml import etreeurl = "https://www.zbj.com/fw/?k=saas"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
page = requests.get(url,headers=headers)
# print(page.text)
html = etree.HTML(page.text)# 以下注釋的是這個網址通過右鍵copy xpath獲取的,注意:body下面的第一個div標簽是隱藏的overflow:hidden,所以這里divi數量需要-1# /html/body/div[2]/div/div/div[3]/div[1]/div[4]/div/div[2]/div/div[2]/div
divs = html.xpath("/html/body/div[1]/div/div/div[3]/div[1]/div[4]/div/div[2]/div/div[2]/div")
print(divs)
for div in divs:# print("hello")# 其次,這里注意價格div前面有兩個div,第一個div什么都沒有但是也要算上,自己去數的時候要注意因為它前面沒有展開▼縮寫?的三角符號# /html/body/div[2]/div/div/div[3]/div[1]/div[4]/div/div[2]/div/div[2]/div[1]/div/div[3]# 這里的[0]是獲取列表的第一個元素,.strip()是用來去掉頭尾兩部的¥,"sass".join是用SaaS將多個文字拼接起來price = div.xpath("./div/div[3]/div[1]/span/text()")[0].strip("¥")title ="sass".join( div.xpath("./div/div[3]/div[2]/a/span/text()"))company = div.xpath("./div/div[5]/div/div/div/text()")print(title)print(price)print(company)# 以下是采用相對路徑
# divs = html.xpath('//*[@id="__layout"]/div/div[3]/div[1]/div[4]/div/div[2]/div/div[2]/div')
# print(divs)
# for div in divs:
# print("hello")
# price = div.xpath("./div/div[3]/div[1]/span/text()")
#
# print(price)
💕 原創不易,還希望各位大佬支持一下 \textcolor{blue}{原創不易,還希望各位大佬支持一下} 原創不易,還希望各位大佬支持一下
👍 點贊,你的認可是我創作的動力! \textcolor{orange}{點贊,你的認可是我創作的動力!} 點贊,你的認可是我創作的動力!
? 收藏,你的青睞是我努力的方向! \textcolor{red}{收藏,你的青睞是我努力的方向!} 收藏,你的青睞是我努力的方向!
🥕 評論,你的意見是我進步的財富! \textcolor{green}{評論,你的意見是我進步的財富!} 評論,你的意見是我進步的財富!