最近两天,关于湖北购车最高补贴9万元超级大促销席卷朋友圈和社交平台,很多的消费者参加了这个大促销活动,很多4S店表示目前已经无法接单,连展车都卖掉了。
这一波由地方与车企一起策划的降价“大降价”呈现蔓延趋势。一场从新能源汽车开启,席卷燃油车的“降价潮”正在迅速袭来。多地发布政策礼包,意在精准拉动汽车消费,各个车企也开始降价,进入抢夺消费者的浪潮里。
这里我们可以通过python爬取汽车之家提供的数据,中国汽车销量,汽车销量查询,通过近几年汽车的销量数据来说明为什么今年汽车市场会出现大规模的降价。
本篇重点介绍下python爬虫部分的内容。项目实行步骤为:
1、确定需要爬取的界面
2、根据页面能提供的内容确定爬取数据需求,中国汽车分厂商每月销售量
4、根据数据前端结构,确定需求,编写爬虫代码,经过简单的分析,网站有反爬机制
,所以这里我们可以通过python多线程采集网站,通过随机数控制保持多个页面使用相同代理IP去获取数据。
代码语言:javascript复制/#! -*- 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()容
最后关于爬取数据,数据清洗,数据分析我们放到下一篇文章再讲述。