python多线程爬取汽车数据

简介: python如何使用多线获取网站数据

最近两天,关于湖北购车最高补贴9万元超级大促销席卷朋友圈和社交平台,很多的消费者参加了这个大促销活动,很多4S店表示目前已经无法接单,连展车都卖掉了。

这一波由地方与车企一起策划的降价“大降价”呈现蔓延趋势。一场从新能源汽车开启,席卷燃油车的“降价潮”正在迅速袭来。多地发布政策礼包,意在精准拉动汽车消费,各个车企也开始降价,进入抢夺消费者的浪潮里。

这里我们可以通过python爬取汽车之家提供的数据,中国汽车销量,汽车销量查询,通过近几年汽车的销量数据来说明为什么今年汽车市场会出现大规模的降价。

本篇重点介绍下python爬虫部分的内容。项目实行步骤为:

1、确定需要爬取的界面

QQ图片20230309151337.png

2、根据页面能提供的内容确定爬取数据需求,中国汽车分厂商每月销售量

4、根据数据前端结构,确定需求,编写爬虫代码,经过简单的分析,网站有反爬机制

,所以这里我们可以通过python多线程采集网站,通过随机数控制保持多个页面使用相同代理IP去获取数据。

#! -*- encoding:utf-8 -*-
import requests
import random
import requests.adapters
import threading # 导入threading模块
# 要访问的目标页面
targetUrlList = [
    "https://https://www.autohome.com.cn/",
    "https://httpbin.org/headers",
    "https://httpbin.org/user-agent",
]
proxyHost = "t.16yun.cn"
proxyPort = "31111"
# 代理验证信息
proxyUser = "16DUXINQ"
proxyPass = "235487"
proxyMeta = f"http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
# 设置 http和https访问都是用HTTP代理
proxies = {
    "http": proxyMeta,
    "https": proxyMeta,
}
# 设置IP切换头
tunnel = random.randint(1, 10000)
headers = {"Proxy-Tunnel": str(tunnel)}
class HTTPAdapter(requests.adapters.HTTPAdapter):
    def proxy_headers(self, proxy):
        headers = super(HTTPAdapter, self).proxy_headers(proxy)
        if hasattr(self, 'tunnel'):
            headers['Proxy-Tunnel'] = self.tunnel
        return headers
# 定义一个函数,用于访问一个目标网址
def visit_url(url, i, j):
    with requests.session() as s: # 使用with语句管理会话
        a = HTTPAdapter()
        # 设置IP切换头
        a.tunnel = tunnel
        s.mount('https://', a)
        r = s.get(url, proxies=proxies)
        print(f"第{i+1}次访问,第{j+1}个网址,结果如下:") # 使用f-string格式化输出
        print(r.text)
# 访问三次网站,使用相同的tunnel标志,均能够保持相同的外网IP
for i in range(3):
    # 创建一个空的线程列表
    threads = []
    for j, url in enumerate(targetUrlList): # 使用enumerate函数遍历列表
        # 创建一个线程,传入目标网址,当前次数和索引
        t = threading.Thread(target=visit_url, args=(url, i, j))
        # 将线程添加到线程列表
        threads.append(t)
        # 启动线程
        t.start()
    # 等待所有线程结束
    for t in threads:
        t.join()

最后关于爬取数据,数据清洗,数据分析我们放到下一篇文章再讲述。

目录
打赏
0
0
0
0
221
分享
相关文章
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
133 83
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
20天前
|
python3多线程中使用线程睡眠
本文详细介绍了Python3多线程编程中使用线程睡眠的基本方法和应用场景。通过 `time.sleep()`函数,可以使线程暂停执行一段指定的时间,从而控制线程的执行节奏。通过实际示例演示了如何在多线程中使用线程睡眠来实现计数器和下载器功能。希望本文能帮助您更好地理解和应用Python多线程编程,提高程序的并发能力和执行效率。
45 20
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
44 12
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python实用技巧:轻松驾驭多线程与多进程,加速任务执行
在Python编程中,多线程和多进程是提升程序效率的关键工具。多线程适用于I/O密集型任务,如文件读写、网络请求;多进程则适合CPU密集型任务,如科学计算、图像处理。本文详细介绍这两种并发编程方式的基本用法及应用场景,并通过实例代码展示如何使用threading、multiprocessing模块及线程池、进程池来优化程序性能。结合实际案例,帮助读者掌握并发编程技巧,提高程序执行速度和资源利用率。
17 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等