使用 Python 爬取某财网并可视化今日涨停股票数据
引言
在本文中,我们将介绍如何使用 Python 语言来爬取某财网站上的今日涨停股票数据,并对其进行简单的数据分析与可视化。通过这个过程,你将学习到如何处理网络请求、解析 JSON 数据、以及使用 Matplotlib 进行数据可视化。
目标网站
准备工作
在开始之前,请确保你的环境中已经安装了以下 Python 库:
requests
用于发送 HTTP 请求。pandas
用于数据处理。execjs
用于执行 JavaScript 代码。matplotlib
用于绘图。fake_useragent
用于生成随机的 User-Agent 字符串。你可以使用 pip 来安装这些库(如果还没有安装的话):
pip install requests pandas execjs matplotlib fake_useragent
步骤详解
1. 导入所需的库
首先我们需要导入项目中需要用到的所有库。
import csv
import random
import pandas as pd
import requests
import execjs
import json
from fake_useragent import UserAgent
from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
2. 设置中文显示支持
为了确保图表中的中文能够正确显示,我们设置字体为宋体,并解决负号显示问题。
font = FontProperties(fname=r"C:\Windows\Fonts\simsun.ttc", size=12)
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimSun'] # 使用宋体
3. 读取代理池文件中的代理列表
接下来,我们将从本地文件中读取代理服务器列表,以避免被目标网站封禁 IP。
file_path = "E:/Python/代理池/proxies.txt"
proxies = []
with open(file_path, 'r') as file:
for line in file:
proxy = line.strip()
proxies.append(proxy)
4. 读取并编译JavaScript代码
由于目标网站可能需要一些动态生成的参数,我们需要读取一个包含 JavaScript 代码的文件,并使用 execjs
库来运行这段代码。
with open("E:\\Python\\网页逆向爬虫\\day35 同花顺案例\\04 问财2版本.js", "r", encoding='utf-8') as f:
data = f.read()
JS = execjs.compile(data)
v = JS.call("yyy.genV")
5. 创建会话对象并设置请求头信息
创建一个 requests.Session
对象,以便可以保持 cookies 跨多个请求。同时,构建请求头信息,包括 Cookie 和 User-Agent。
session = requests.session()
url = "http://www.iwencai.com/customized/chart/get-robot-data"
headers = {
"Cookie": f"other_uid=Ths_iwencai_Xuangu_jqg03tda4wk0hzftcf032mw2prdo0ffj; ta_random_userid=okfl1vxvlo; cid=56ef552233dadd465356ed5e073e2f7f1684816461; u_dpass=TCBjRthQXdD
作者:白狐欧莱雅