6行代码,抓取汽车销售价格

38 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第31天,点击查看活动详情

创建项目

首先,我们用scrapy创建一个项目。

scrapy startproject scrapy_carhome

image.png

自定义爬虫文件

项目创建好了,那就需要创建我们自定义的爬虫文件了。

  1. 定位爬取接口
  2. 进入spiders目录
  3. 创建自定义爬虫文件
  4. 补充路径

在目标页面打开开发者调试工具,获取到请求接口。 image.png

# 进入**spiders**目录
 cd .\scrapy_carhome\scrapy_carhome\spiders\
 # 创建自定义爬虫文件
scrapy genspider carhome car.autohome.com.cn/price/brand-33.html

可以看到文件生成出来了,但是里面的路径却与我们需要的那个路径有所不同,那么就需要我们手动给他补上后面的目录了。

image.png

准备工作做好了,那么就可以运行一下看能否正常进入parse函数中了

image.png

数据抓取

前面的准备工作一切正常,剩下的就是抓取我们所需的数据了。

定位车型

我们先打开目标网站,通过xpath插件定位出所有的车型

image.png

通过尝试拿到了xpath语句之后,到我们自定义的爬虫文件中先尝试下看能不能正常获取到数据

image.png

车型列表可以正常拿到,通过extract函数,我们得到了实际所需要的数据。

def parse(self, response):
    title_list = response.xpath('//div[@class="main-title"]/a/text()')

    for title in title_list:
        print(title.extract())

定位价格

车型拿到了,剩下的就是拿到该车的价格了,老样子,还是先通过xpath在浏览器定位好公式。

image.png

拿到公式之后,老样子,先测试下能不能在代码中正常获取到。

image.png

效果正常,那么我们就可以将两个内容合并起来了。

image.png

def parse(self, response):
    title_list = response.xpath('//div[@class="main-title"]/a/text()')
    price_list = response.xpath('//span[@class="font-arial"]/text()')
    for i in range(len(title_list)):
        title = title_list[i].extract()
        price = price_list[i].extract()
        print(title, price)

就这样,仅仅只需要写6行代码,我们就可以拿到自己需要的数据了,比起前面又是配置这,又是配置那的,是不是方便很多?