持续创造,加速生长!这是我参与「掘金日新方案 4 月更文挑战」的第1天,点击查看活动概况
数据收集
XPath,XML途径言语的简称。XPath即为XML途径言语(XML Path Language),它是一种用来确认XML文档中某部分方位的言语。XPath首要用于解析XML文档,能够用来获取XML文档中某个元素的方位、属性值等信息。XPath能够用于XML文档解析、XML数据抽取、XML途径匹配等方面。
发送恳求
首先,咱们要进行数据来历剖析,知道咱们的需求是什么?
清晰需求:
- 清晰收集网站是什么?
- 清晰收集数据是什么?
车辆基本信息
然后,咱们剖析车辆基本信息数据, 具体是恳求那个网址能够得到咱们想要的数据。
经过开发者东西, 进行抓包剖析:
打开开发者东西: F12 / 鼠标右键点击查看选择network
刷新网页: 让本网页数据内容重新加载一遍 <方便剖析数据出处>
查找数据来历: 复制你想要的内容, 进行查找即可
import requests
url = 'https://www.che168.com/china/a0_0msdgscncgpi1ltocsp1exx0/'
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'}
res = requests.get(url,headers=headers)
咱们和之前相同,获取数据,咱们会发现,车辆的基本信息就在网页源代码中,咱们今日就用xpath的方法来解析数据。
解析数据
接下来,咱们用xpath解析数据。咱们用开发者东西定位到标签方位。
咱们经过网页源代码,咱们能够获取到每一个网页的url。
selector=parsel.Selector(res.text)
detail_url_list = selector.xpath('//ul[@class="viewlist_ul"]/li/a[@class="carinfo"]/@href').getall()
咱们能够看到,得到下面数据。
咱们会发现,咱们得到了两种网页,所以,在这儿咱们拼接网页就需要留意,这儿,我不多说,直接看我是怎么写的。
if detail_url.split('/') == '':
detail_url = 'https:'+detail_url
else:
detail_url = 'https://www.che168.com'+detail_url
这样,咱们就得到了每一个车辆信息的数据网页,看看运行之后的作用吧。
接下来,咱们就依次访问某个链接,获取咱们想要的数据。
responses = requests.get(detail_url,headers=headers)
detail_selector = parsel.Selector(responses.text)
我用不同颜色标注的,便是咱们这次想要获取的数据,咱们这儿以车辆名称为例,讲解下path如何写。
title = detail_selector.xpath('string(//h3[@class="car-brand-name"])').get("").strip()
咱们看看网页源代码是如何得到的xpath。
或许有人就要问了,这个
("").strip()
是什么意思?这个便是去除空格的,仅仅为了后期数据的漂亮。
后边的我就不一一展现了,我直接放代码了,不懂的在评论区沟通。
tableShowMileage = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[1]/h4/text()').get("").strip()
theRegistrationTime = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[2]/h4/text()').get("").strip()
blockADisplacement = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[3]/h4/text()').get("").strip()
addr = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[4]/h4/text()').get("").strip()
guobiao = detail_selector.xpath('//ul[@class="brand-unit-item fn-clear"]/li[5]/h4/text()').get("").strip()
price = detail_selector.xpath('string(//span[@id="overlayPrice"])').get()
咱们打印这些数据,看看作用吧。
或许咱们留意到了,有返回空值的,这个或许便是被反爬,咱们感兴趣能够用署理IP试试。
保存数据
和咱们上一篇相同,咱们先写入字典,然后在写入csv文件里面。
dit ={
'车辆':title,
'表显里程':tableShowMileage,
'上牌时间':theRegistrationTime,
'挡位/排量':blockADisplacement,
'车辆所在地':addr,
'查看限迁地':guobiao,
'价格':price,
}
csv_writer.writerow(dit)
咱们感兴趣还能够获取车辆信息更具体的数据,其实原理都是相同的。
总结
经过本文的学习,咱们学习了数据收集。咱们在收集数据的时候,遇到各种问题,自己在测验解决问题,也是在一种学习,本次实战,咱们明白如何运用xpath解析数据。今日就到这儿,有什么问题,能够在评论区留言。