首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >汽车大屏实话数据实训二之爬虫数据获取

汽车大屏实话数据实训二之爬虫数据获取

作者头像
张哥编程
发布2024-12-17 16:47:45
发布2024-12-17 16:47:45
2390
举报
文章被收录于专栏:云计算linux云计算linux

1.4创建爬虫代码

汽车大屏实话数据实训二之爬虫数据获取_爬虫
汽车大屏实话数据实训二之爬虫数据获取_爬虫

1.4.2 在目录spiderMan下创建spider.py文件,先创建目录结构

代码语言:javascript
复制
import requests
from lxml import etree
import csv
import os
import time
import json
import re
import django
import pandas as pd

#代码编写
class spider(object):
    def __init__(self):
        pass
    def init(self):
        pass
    def main(self):
        pass

#调用
if __name__ == '__main__':
    spiderObj = spider()

1.5 完善代码,爬取数据

需要url网址,对网址进行分析

汽车大屏实话数据实训二之爬虫数据获取_大数据_02
汽车大屏实话数据实训二之爬虫数据获取_大数据_02
汽车大屏实话数据实训二之爬虫数据获取_爬虫_03
汽车大屏实话数据实训二之爬虫数据获取_爬虫_03
汽车大屏实话数据实训二之爬虫数据获取_大数据实训_04
汽车大屏实话数据实训二之爬虫数据获取_大数据实训_04

爬取数据的url网址:

https://www.dongchedi.com/motor/pc/car/rank_data?aid=1839&app_name=auto_web_pc&city_name=%E9%83%91%E5%B7%9E&count=10&offset=0&mnotallow=&new_energy_type=&rank_data_type=11&brand_id=&price=&manufacturer=%E8%87%AA%E4%B8%BB&series_type=&natinotallow=0 获取数据的页面:

1.5.1 csv文件的创建

代码语言:javascript
复制
def init(self):
    if not os.path.exists('./temp.csv'):
        with open('./temp.csv', 'a', newline='', encoding='utf-8') as wf:
            write = csv.writer(wf)
            write.writerow(["brand", "carName", "carImg", "saleVolume", "price", "manufacturer", "rank", "carModel",
                            "energyType", "marketTime", "insure"])
#调用
if __name__ == '__main__':
    spiderObj = spider()
    # spiderObj.init()

在spiderMan下生成temp.csv文件,并查看其文件结构和内容。

汽车大屏实话数据实训二之爬虫数据获取_爬虫_05
汽车大屏实话数据实训二之爬虫数据获取_爬虫_05

1.5.2 数据文件的爬取 效果可以获取汽车列表的信息

代码语言:javascript
复制
class spider(object):
    def __init__(self):
        self.spiderUrl=('https://www.dongchedi.com/motor/pc/car/rank_data?aid=1839&app_name=auto_web_pc&city_name=%E9%83%91%E5%B7%9E&count=10&offset=10&month=&new_energy_type=&rank_data_type=11&brand_id=&price=&manufacturer=&series_type=&nation=0')
        self.headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36'}
    #代码未更改
    def init(self):
        if not os.path.exists('./temp.csv'):
            with open('./temp.csv', 'a', newline='', encoding='utf-8') as wf:
                write = csv.writer(wf)
                write.writerow(["brand", "carName", "carImg", "saleVolume", "price", "manufacturer", "rank", "carModel",
                                "energyType", "marketTime", "insure"])
    def main(self):
        pageJson=requests.get(self.spiderUrl, headers=self.headers).json()
        pageJson=pageJson["data"]["list"]
        print(pageJson)

#调用
if __name__ == '__main__':
    spiderObj = spider()
    # spiderObj.init()
    spiderObj.main()

1.5.3 读取单个汽车信息 在主类里面增加两个函数,代码如下

代码语言:javascript
复制
#定义两个函数,设置页和读取页
def set_page(self,newPage):
    with open('./spiderPage.txt','a',encoding='utf-8') as a_f:
        a_f.write('\n'+str(newPage))
def get_page(self):
    with open('./spiderPage.txt','r',encoding='utf-8') as r_f:
        return r_f.readlines()[-1].strip()

def main(self):
    #定义变量count
    count=self.get_page()
    params={'offset':int(count)}
    print("数据从{}开始爬取".format(int(count)+1))

    #pageJson=requests.get(self.spiderUrl, headers=self.headers).json()
    pageJson=requests.get(self.spiderUrl, headers=self.headers,params=params).json()
    pageJson=pageJson["data"]["list"]
    print(pageJson)
    #测试设置数据值
    #self.set_page(int(count)+10)

在spiderMan下添加文件spiderPage.txt,且设置值为0

执行上述代码,会发现有第一条数据

在这里插入图片描述

汽车大屏实话数据实训二之爬虫数据获取_汽车_06
汽车大屏实话数据实训二之爬虫数据获取_汽车_06

上面的代码

#测试设置数据值

#self.set_page(int(count)+10)

用于像spiderPage.txt添加数据值。0+10=10

增加一个对于循环遍历的测试:

代码语言:javascript
复制
#循环遍历
for index,car in enumerate(pageJson):
    print('正在爬取第%d'%(index+1)+'数据')
    print(car['brand_name'])
    break

    #测试设置数据值
#self.set_page(int(count)+10)

1.5.4 打印相关数据

代码语言:javascript
复制
#循环遍历,代码演示中,只写了打印!其他没有写!
for index,car in enumerate(pageJson):
    carData = []
    print('正在爬取第%d'%(index+1)+'数据')
    #品牌名 print(car['brand_name'])
    carData.append(car['brand_name'])
    #车名  print(car['series_name'])
    carData.append(car['series_name'])
    #打印图片链接print(car['image'])
    carData.append(car['image'])
    #销量
    carData.append(car['count'])
    #价格,需要拼接最低价格和最高价格;
    price=[]
    price.append(car['min_price'])
    price.append(car['max_price'])
    carData.append(price)
汽车大屏实话数据实训二之爬虫数据获取_大数据实训_07
汽车大屏实话数据实训二之爬虫数据获取_大数据实训_07
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.4创建爬虫代码
  • 1.4.2 在目录spiderMan下创建spider.py文件,先创建目录结构
  • 1.5 完善代码,爬取数据
  • 1.5.1 csv文件的创建
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档