本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。
使用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}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!