【Python爬虫实战】汽车城最好的十款车,第一名竟是这款车...Python教你一键采集二手车数据信息实现数据可视化展示哦~

248 阅读4分钟

前言

驾考不易,天天早起去练车,无论烈日还是下雨,通通都在室外进行,但想要拿证,一定要坚

持不懈的去练车。

小编就是在一复一日的练习中,终于得到了我人生中以为不可能考证之驾照到手了!

这不?驾照到手了,下一步是需要什么呢?当然是需要车子了啦,为了方便练车上路开,新车

我是不敢上手的,这不小心磕着哪儿了不得心疼洗呢!哈哈哈,所以小编就想着看看有合适的

二手车没得,就有了今天的内容,今天手把手教大家用代码一键下载海量二手车资源,让我来

看看实惠又好用的款式给我爬下来并做一做实现数据可视化展示,挑一挑蛮~

正文

一、运行环境

 1)开发环境 

 版 本: python 3.8 

 编辑器:pycharm 2022.3.2 

 requests、parsel >>> pip install requests 或parsel

 +python安装包 安装教程视频。

 +pycharm 社区版 专业版 及 激活码免费找我拿即可 。

2)模块安装

 pip install 模块名 镜像源安装 pip install -i pypi.douban.com/simple/ +模块名 

Python 安 装包 安装教程视频 pycharm 社区版 专业版 及 激活码免费找我拿即可 ! 

(各种版本的都 有,可以一整套直接分享滴~)

 按住键盘 win + r, 输入cmd回车 打开命令行窗口, 在里面输入 pip install 模块名 。

二、爬虫基本思路流程: <公式>

 1. 明确需求 

 明确采集网站是什么? changsha.taoche.com/all/?page=1… 

 明确采集数据是什么? 车辆基本信息 。

2. 发送请求, 模拟浏览器对于url地址发送请求 。

 请求链接: changsha.taoche.com/all/?page=1… 

3. 获取数据, 获取网页源代码 <服务器返回响应数据> 。

4. 解析数据, 提取我们想要的数据内容 5. 保存数据, 把数据内容保存表格 。

三、代码展示

主程序——

"""
# 导入数据请求模块 <第三方模块, 需要安装 pip install requests>
import requests
# 导入数据解析模块 <第三方模块, 需要安装 pip install parsel>
import parsel
# 导入csv
import csv

# open内置函数 --> 创建文件
f = open('data1.csv', mode='w', encoding='utf-8', newline='')
# 调用csv模块里面字典写入DictWriter f文件对象  fieldnames 字段名 <表头>
csv_writer = csv.DictWriter(f, fieldnames=[
    '标题'
    '年份',
    '里程',
    '城市',
    '价格',
    '标签',
    '保修',
    '详情页',
])
# 写入表头
csv_writer.writeheader()
"""
1. 发送请求, 模拟浏览器对于url地址发送请求
    请求链接: https://changsha.taoche.com/all/?page=1
"""
for page in range(1, 51):
    try:
        # 请求链接
        url = f'https://changsha.taoche.com/all/?page={page}'
        # 模拟浏览器 < headers请求头 >
        headers = {
            # User-Agent 用户代理, 表示浏览器基本身份信息
            'User-Agent': ' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
        }
        # 发送请求
        # 通过requests模块里面get请求方法对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量名接受返回数据
        response = requests.get(url=url, headers=headers)
        # <Response [200]> 响应对象 200 状态码表示请求成功
        print(response)
        """
        2. 获取数据, 获取网页源代码 <服务器返回响应数据>
            response.text 获取响应的文本数据 <获取网页源代码>
        
        3. 解析数据, 提取我们想要的数据内容
        
        解析方法: 都要掌握, 那个方便用那个
            re  : 直接提取字符串数据
            css : 根据标签属性提取数据内容
            xpath: 根据标签节点提取数据内容
        
        css选择器: 会 1 不会 0
            1. 查看车次信息, 所对应标签位置是什么
        """
        # 转换数据, 把获取到 html字符串数据 <response.text>, 转成可解析对象
        selector = parsel.Selector(response.text)  # <Selector xpath=None data='<html lang="en">\n<head>\n    <meta cha...'>
        print(selector)
        # 获取所有li标签 --> 获取多个数据, 返回列表
        lis = selector.css('.Content_left .gongge_ul .li')
        # for循环遍历, 把列表里面元素一个一个提取出来
        for li in lis:
            """
            根据具体数据所对应标签进行提取
            
            语法规定:
                get 提取第一个标签数据 字符串
                getall 提取所有标签数据 列表
            """
            # 标题
            title = li.css('a.title span::text').get()
            # 信息
            info = li.css('.gongge_main p i::text').getall()
            year = info[0].replace('年', '')# 年份
            km = info[1].replace('万公里', '')  # 里程
            city = info[2].strip()  # 城市
            # 价格
            price = li.css('.price .Total::text').get()
            tag = li.css('.car_tag em::text').get().strip()  # 标签
            label = li.css('.tc_label::text').get()  # 是否保修
            href = li.css('a.title::attr(href)').get()  # 详情页
            dit = {
                '标题': title,
                '年份': year,
                '里程': km,
                '城市': city,
                '价格': price,
                '标签': tag,
                '保修': label,
                '详情页': href,
            }
            # 写入数据
            csv_writer.writerow(dit)
            print(title, year, km, city, price, tag, label, href)
    except:
        print('有小bug哦,需要视频学习记得找我哦')

四、效果展示

1)爬虫下载效果

​2)保存在excel

3)数据分析可视化

可视化效果只展示小部分,需要的直接滴滴我即可拿数据跟数据的代码等。

二手车年份分布可视化

汽车平牌数量前十

总结

当然了,没有一款车是完美的,多看看的话,总能找到适合自己的车子啦~

今天栗子教大家写的代码就到这里正是结束了呢,想要学习爬虫跟数据分析的小伙伴儿记得赶

紧关注我啦!