懂车帝参数配置详情信息爬取

自学小白,今天试着爬取懂车帝的某些车型的详情配置信息。

看了很多大佬的文章,很多都是直接调用的API数据接口,但是我没找到完整参数的数据接口,就用传统的方法获取基本信息了,欢迎大家批评指正!

先说一句,懂车帝懂车帝你人还怪好的叻!(目前没啥反爬措施)

思路

整体的思路是先获取到车型的id,再获取页面信息,然后处理HTML,导出数据到excel。

因为所有车型信息页面都需要车型id作为参数,所有我们首先要获取到车型id

以海豚为例,我们其实仔细观察网址链接就能发现5008就是海豚的车型id,当然观察法只是说说而已,具体方法参考文章①。

完整代码

1、参考代码

该代码会依次爬取"海豚", "荣放", "普拉多", "兰德酷路泽"这些车型信息,并输出到excel中;

import json
import requests
import pandas as pd
from parsel import Selector
from bs4 import BeautifulSoup

# 搜索汽车名称url
get_car_id_url = "https://www.dongchedi.com/search?keyword={car_name}&currTab=1&city_name={city_name}&search_mode=history"

# headers必须要有
headers = {
    'pragma': 'no-cache',
    'accept-language': 'zh-CN,zh;q=0.9',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
    'accept': '*/*',
    'cache-control': 'no-cache',
    'authority': 'www.dongchedi.com'
}


# 获取车辆id的函数,最后返回id
def get_car_id(car_name, city_name):
    carid_url = get_car_id_url.format(car_name=car_name, city_name=city_name)
    response = requests.get(url=carid_url, headers=headers).text
    selector = Selector(text=response)
    car_message = selector.css('''.dcd-car-series a::attr(data-log-click)''').get()
    car_message = json.loads(car_message)
    car_id = car_message.get("car_series_id")
    return car_id


# 获取车辆详情
def get_car_detail(car_id):
    # 汽车详情页url
    url = "https://www.dongchedi.com/auto/params-carIds-x-" + str(car_id)
    # 发送页面请求
    response = requests.get(url, headers)
    # 判定是否请求成功
    if response.status_code == 200:
        print('请求成功(*^▽^*)')
    else:
        print('请求网页失败┭┮﹏┭┮')
    # 获取需要进一步加工的网页数据
    html = requests.get(url, headers=headers)
    # 设置系统默认编码为UTF-8,防止乱码
    html.encoding = 'utf-8'
    # 使用BeautifulSoup解析这段代码,得到一个BeautifulSoup对象
    soup = BeautifulSoup(html.text, 'lxml')
    # 按照标准的缩进格式的结构输出
    # print(soup.prettify())
    trs = soup.find_all('div', class_='table_row__yVX1h')[3:12]
    car_info = []
    for tr in trs:
        infos = list(tr.stripped_strings)
        car_info.append(infos)
    # print(car_info)
    return car_info


# 启动函数
def main(car_name, city_name):
    car_id = get_car_id(car_name=car_name, city_name=city_name)
    car_info = get_car_detail(car_id=car_id)
    df = pd.DataFrame(car_info)
    # print(df)
    writer = pd.ExcelWriter(r"D:\work\临时\result.xlsx", mode='a', if_sheet_exists='new')  # mode如果不写则只会保留最后一次数据
    df.to_excel(writer, sheet_name=car_name, index=False)
    writer.close()  # 升级了Python,writer.save()会报错


if __name__ == '__main__':
    car_list = ["海豚", "荣放", "普拉多", "兰德酷路泽"]  # , "欧萌达", "瑞虎5X"
    for i in car_list:
        main(i, "重庆")

输出结果

2、重点

1、用request请求数据,headers必须要有!

2、详情页里我只取了基本信息先关的前几行,想获取全部信息去掉后面的切片器

trs = soup.find_all('div', class_='table_row__yVX1h')

3、升级了Python,writer.save()会报错 ,要用writer.close()

参考文章

(排名不分先后)

1、python爬虫实战【某汽车网站信息爬取】_爬取懂车帝车型-CSDN博客

2、【Python爬虫】懂车帝_车型库页面_懂车帝爬虫_mafumafu2018的博客-CSDN博客

是中国知名的汽车资讯平台,提供了大量关于汽车信息和数据。如果你想爬取上的数据,特别是关于辆的级别、能源类型和上市时间,可以按照以下步骤进行: 1. **确定目标数据**:首先明确你需要爬取的具体数据,例如辆的级别(如紧凑型、SUV等)、能源类型(如汽油、电动等)和上市时间。 2. **分析网页结构**:使用浏览器的开发者工具(F12)查看网站的结构,找到包含目标数据的HTML标签和类名。 3. **编写爬虫代码**:使用Python爬虫库如BeautifulSoup和requests来编写爬虫代码。以下是一个简单的示例代码: ```python import requests from bs4 import BeautifulSoup # 目标URL url = 'https://www.dongchedi.com/car/' # 发送HTTP请求 response = requests.get(url) # 解析HTML内容 soup = BeautifulSoup(response.text, 'html.parser') # 找到包含信息的标签 cars = soup.find_all('div', class_='car-item') # 提取数据 for car in cars: level = car.find('span', class_='level').text energy_type = car.find('span', class_='energy-type').text launch_time = car.find('span', class_='launch-time').text print(f'级别: {level}, 能源类型: {energy_type}, 上市时间: {launch_time}') ``` 4. **处理反爬机制**:可能会有反爬机制,如验证码、IP封禁等。可以使用代理IP、设置请求头和延时等方法来绕过这些限制。 5. **数据存储**:将爬取到的数据存储到本地文件或数据库中,方便后续分析和使用。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值