持续创造,加速生长!这是我参与「掘金日新方案 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解析数据。咱们用开发者东西定位到标签方位。

【Python实战】Python采集二手车数据——超详细讲解

咱们经过网页源代码,咱们能够获取到每一个网页的url。

    selector=parsel.Selector(res.text)
    detail_url_list = selector.xpath('//ul[@class="viewlist_ul"]/li/a[@class="carinfo"]/@href').getall()

咱们能够看到,得到下面数据。

【Python实战】Python采集二手车数据——超详细讲解

咱们会发现,咱们得到了两种网页,所以,在这儿咱们拼接网页就需要留意,这儿,我不多说,直接看我是怎么写的。

        if detail_url.split('/') == '':
            detail_url = 'https:'+detail_url
        else:
            detail_url = 'https://www.che168.com'+detail_url

这样,咱们就得到了每一个车辆信息的数据网页,看看运行之后的作用吧。

【Python实战】Python采集二手车数据——超详细讲解

接下来,咱们就依次访问某个链接,获取咱们想要的数据。

    responses = requests.get(detail_url,headers=headers)
    detail_selector = parsel.Selector(responses.text)

【Python实战】Python采集二手车数据——超详细讲解

我用不同颜色标注的,便是咱们这次想要获取的数据,咱们这儿以车辆名称为例,讲解下path如何写。

title = detail_selector.xpath('string(//h3[@class="car-brand-name"])').get("").strip()

咱们看看网页源代码是如何得到的xpath。

【Python实战】Python采集二手车数据——超详细讲解

或许有人就要问了,这个

("").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()

咱们打印这些数据,看看作用吧。

【Python实战】Python采集二手车数据——超详细讲解

或许咱们留意到了,有返回空值的,这个或许便是被反爬,咱们感兴趣能够用署理IP试试。

保存数据

和咱们上一篇相同,咱们先写入字典,然后在写入csv文件里面。

        dit ={
            '车辆':title,
            '表显里程':tableShowMileage,
            '上牌时间':theRegistrationTime,
            '挡位/排量':blockADisplacement,
            '车辆所在地':addr,
            '查看限迁地':guobiao,
            '价格':price,
        }
        csv_writer.writerow(dit)

咱们感兴趣还能够获取车辆信息更具体的数据,其实原理都是相同的。

总结

经过本文的学习,咱们学习了数据收集。咱们在收集数据的时候,遇到各种问题,自己在测验解决问题,也是在一种学习,本次实战,咱们明白如何运用xpath解析数据。今日就到这儿,有什么问题,能够在评论区留言。