Python爬虫第二战(使用xpath爬取网站数据)

本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。

使用xpath爬取猪八戒网站数据

  • 前言


前言

今天学习的主要是关于Python使用xpath来爬取猪八戒网的网页知识的理解和应用


#1.获取首页数据
#2.使用etree.HTML将首页HTML字符串解析为一个节点树对象(类似DOM树)
#3.使用etree.xpath根据标签名来定位元素

import requests
from lxml import etree

url = "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}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

你可能感兴趣的:(Python,python,爬虫,开发语言,xpath,lxml)