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()

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

相关文章
|
4天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名
【4月更文挑战第22天】Pandas Python库提供数据排序和排名功能。使用`sort_values()`按列进行升序或降序排序,如`df.sort_values(by='A', ascending=False)`。`rank()`函数用于计算排名,如`df['A'].rank(ascending=False)`。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`和分别对'A'、'B'列排名。
14 2
|
2天前
|
机器学习/深度学习 数据挖掘 网络架构
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
15 0
|
3天前
|
机器学习/深度学习 算法 数据挖掘
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享-2
PYTHON银行机器学习:回归、随机森林、KNN近邻、决策树、高斯朴素贝叶斯、支持向量机SVM分析营销活动数据|数据分享
24 1
|
2天前
|
机器学习/深度学习 算法 算法框架/工具
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
数据分享|PYTHON用KERAS的LSTM神经网络进行时间序列预测天然气价格例子
23 0
|
2天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
2天前
|
机器学习/深度学习 算法 Python
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
数据分享|Python决策树、随机森林、朴素贝叶斯、KNN(K-最近邻居)分类分析银行拉新活动挖掘潜在贷款客户
21 4
|
3天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,提供DataFrame数据结构。基本步骤包括导入库、创建DataFrame及进行数据筛选。示例代码展示了如何通过布尔索引、`query()`和`loc[]`方法筛选`Age`大于19的记录。
10 0
|
5天前
|
Python
如何使用Python的Pandas库进行数据缺失值处理?
Pandas在Python中提供多种处理缺失值的方法:1) 使用`isnull()`检查;2) `dropna()`删除含缺失值的行或列;3) `fillna()`用常数、前后值填充;4) `interpolate()`进行插值填充。根据需求选择合适的方法处理数据缺失。
39 9
|
7天前
|
索引 Python
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
使用Pandas在Python中创建数据透视表的步骤包括:安装Pandas库,导入它,创建或读取数据(如DataFrame),使用`pd.pivot_table()`指定数据框、行索引、列索引和值,计算聚合函数(如平均分),并可打印或保存结果到文件。这允许对数据进行高效汇总和分析。
10 2
|
7天前
|
JSON 关系型数据库 数据库
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
34 0

热门文章

最新文章