python-(6-5-1)爬虫---xpath解析实战
创始人
2024-03-28 07:49:53
0

文章目录

  • 一 环境准备
  • 二 需求
  • 三 分析
    • 1 拿到页面源代码
    • 2 提取和解析数据
  • 四 步骤流程
    • 1 拿到页面源代码
    • 2 提取和解析数据
  • 五 完整代码

xpath是在XML文档中搜索内容的一门语言
html是xml的一个子集

一 环境准备

安装lxml模块

在这里插入图片描述

二 需求

爬取某网站的数据

在这里插入图片描述

三 分析

1 拿到页面源代码

2 提取和解析数据

四 步骤流程

1 拿到页面源代码

通过get请求获取访问页面的源代码,具体分析步骤此处不作重点讲述。

在这里插入图片描述

如果不太清楚,可以参考笔者的文章。

python-(6-3-1)爬虫—requests入门(基于get请求)

2 提取和解析数据

由于每一个小方框代表每一个公司所提供商品服务的数据信息,而这些内容都有相同的属性格式,我们只需要遍历每一个“小方框”即可。

接下来我们需要找到能够遍历所有“小方框”的HTML代码。

选中第一个小方框,右键“检查源代码”,定位到表示该小方框的HTML代码层。

在这里插入图片描述

接着我们将代码向上拉,找到能够包含所有小方框的代码。

经过反复的试探和拉扯,确定出哪一行的代码包括所有的小方框。

但是,我们只需要第一个小方框的代码。

选中,然后右键选择xpath

在这里插入图片描述

就可以得到第一个服务商的xpath

在这里插入图片描述

由于XPATH的特性,我们可以根据第一个小方框的“路径”,得到它的“兄弟”的内容。

也就是去掉后面的索引[1]即可。

在这里插入图片描述

接着从第一个服务商的xpath开始往下数,然后就能得到价格信息。
以此类推,其他服务商的价格信息也是相同的xpath,遍历即可。

在这里插入图片描述

同样的道理,我们也可以抓取其他的数据。
比如公司名称,比如服务的标签。

除了我们手动去数xpath,还可以通过 copt xpath 后,比较二者的“绝对路径”,推断出“相对路径”。(如果是学习过Linux的读者,可能会更理解这句话)

五 完整代码

#!/usr/bin/python
# -*- coding: gb18030 -*-
from lxml import etree
import sys
import io
import requests# 改变标准输出的默认编码
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')# 获取页面源代码
url = "https://guangzhou.zbj.com/search/service/?l=0&kw=erp&r=2"
resp = requests.get(url=url)
resp.encoding = 'utf-8'# 解析获得的HTML源代码
html = etree.HTML(resp.text)# 拿到每一个服务商的div
# 第一个服务商的xpath后面是有/div[1]标记,去掉[1]后就是/div所有的服务商的div
divs = html.xpath('//*[@id="__layout"]/div/div[2]/div/div[4]/div[4]/div[1]/div')for div in divs:# 得到服务商的价格price = div.xpath("./div/div[2]/div[1]/span/text()")# 如果有空值,则过滤掉if price == []:continue# 去掉金额前面的¥符号price = price[0].strip("¥")# 得到服务商的公司名name = div.xpath("./div/a/div[2]/div[1]/div/text()")[0]# 得到服务商的供应服务描述label = "erp".join(div.xpath("./div/div[2]/div[2]/a/text()"))# 得到服务商的支持地点location = div.xpath("./div/div[1]/a/div[2]/div/span[2]/text()")[-1]# 输出结果print(name+"_"+price+"_"+label+"_"+location)# 关闭访问请求的连接
resp.close()

相关内容

热门资讯

分手后“60后”男子起诉“90... 日前,重庆市云阳县人民法院公开了一份刑事附带民事判决书。重庆“60后”男子陈某某在分手后,以赠与合同...
今年我国积极财政政策打出“组合... 12月27日至28日,全国财政工作会议在北京召开。记者从会议上了解到,2025年,我国积极财政政策打...
福州4A景区“瓷天下”停业后续... 2024年6月,红星新闻曾报道福州市闽清县4A级景区“瓷天下”关门停业一事。(此前报道:)彼时,景区...
2026年我国将继续实施更加积... 12月27日至28日,全国财政工作会议在北京召开。2026年是我国连续第二年实施更加积极的财政政策。...
中国财长介绍“更加积极的财政政... 中新社北京12月28日电 (记者 赵建华)2026年中国继续实施更加积极的财政政策,保持必要的财政赤...
泽连斯基称基辅存在“红线”并拒... 【弗拉基米尔·泽连斯基表示,基辅在冲突解决方面仍有“红线”,并补充道,在任何情况下,乌方都不打算在法...
北京专业离婚律师服务分析(20... 随着社会经济结构的变化与个人权利意识的增强,婚姻家事法律服务需求日益呈现出专业化、精细化的趋势。在北...
海南自贸港封关超十日 多项政策... 本月18日,海南自由贸易港正式启动全岛封关运作,到今天(28日)已超过10天,多项从封关起实施的“升...
涉嫌恶意串通,伪造借条提起诉讼... 为逃避债务、规避法院执行 田某华串通亲友、伪造借条 向海南省海口市美兰区人民法院 提起诉讼 美兰法院...
原创 在... 在古代,被皇帝赐死其实是一种特殊的待遇,而不仅仅是死亡本身值得关注,更应看赐字所体现的意义。 首...