第一个小爬虫_爬取 股票数据

前言

爬取 雪球网的股票数据
[环境使用]:python 3.12 解释器pycharm 编辑器
【模块使用】:import requests  -->数据请求模块 要安装 命令 pip install requestsimport csv       -->将数据保存到CSV表格中import pandas    -->也可以将数据保存到Excel表格文件中 也要安装 pip install pandas
爬虫实现流程:<基本公式 可以套用>
一、数据来源分析1.明确需求:明确采集的网站以及数据内容-网址:雪球网-数据:股票数据2.抓包分析:分析 股票数据,可以请求哪个网址能够得到数据-打开 开发者工具:F12 / 右键 点击检查选择 network (网络)-点击第二页数据--数据真实地址:https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page=2&size=30&order=desc&order_by=percent&market=CN&type=sh_szhttps://stock.xueqiu.com/v5/stock/screener/quote/list.json?page=3&size=30&order=desc&order_by=percent&market=CN&type=sh_sz--请求网址:--请求方式:--请求头:
二、代码实现步骤1、发送请求 ->模拟浏览器对于url发送请求2.获取数据  ->获取服务器返回响应数据《整个数据》3.解析数据  ->提取我们需要的数据4.保存数据  ->保存表格文件<csv / Excel> 中排量替换方法:1.选择替换的内容2.Ctrl + R3.输入正则命令进行需要替换的内容:.* ->匹配 : 冒号后的所有内容 , (.*?): ->匹配加引号  (.*) ->匹配加引号,逗号,   ->替换成 逗号             '$1':              '$2',4. 点 .* 按钮,最后点 Replace 或 Replace All 按钮 进行替换

1.效果

2.代码

'''
爬取 雪球网的股票数据
[环境使用]:python 3.12 解释器pycharm 编辑器
【模块使用】:import requests  -->数据请求模块 要安装 命令 pip install requestsimport csv       -->将数据保存到CSV表格中import pandas    -->也可以将数据保存到Excel表格文件中 也要安装 pip install pandas
爬虫实现流程:<基本公式 可以套用>
一、数据来源分析1.明确需求:明确采集的网站以及数据内容-网址:雪球网-数据:股票数据2.抓包分析:分析 股票数据,可以请求哪个网址能够得到数据-打开 开发者工具:F12 / 右键 点击检查选择 network (网络)-点击第二页数据--数据真实地址:https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page=2&size=30&order=desc&order_by=percent&market=CN&type=sh_szhttps://stock.xueqiu.com/v5/stock/screener/quote/list.json?page=3&size=30&order=desc&order_by=percent&market=CN&type=sh_sz--请求网址:--请求方式:--请求头:
二、代码实现步骤1、发送请求 ->模拟浏览器对于url发送请求2.获取数据  ->获取服务器返回响应数据《整个数据》3.解析数据  ->提取我们需要的数据4.保存数据  ->保存表格文件<csv / Excel> 中排量替换方法:1.选择替换的内容2.Ctrl + R3.输入正则命令进行需要替换的内容:.* ->匹配 : 冒号后的所有内容 , (.*?): ->匹配加引号  (.*) ->匹配加引号,逗号,   ->替换成 逗号             '$1':              '$2',4. 点 .* 按钮,最后点 Replace 或 Replace All 按钮 进行替换
'''
#导入数据请求模块<需要安装 命令 pip install requests>
import requests
# 导入格式化输出模块
from pprint import pprint
"""
保存数据,保存到表格文件
1.CSV - CSV 模块
2.Excel
"""
# 导入 CSV 模块
import csv
# 导入pandas 模块 <需要安装> 保存Excel文件
import pandas as pd# 第4步 保存数据
# 4.1 创建文件对象
fileObj = open('雪球股票数据.CSV', mode='w', encoding='utf-8', newline='')
# 4.1 fieldnames 字段名,表头一行数据
csv_writer = csv.DictWriter(fileObj,fieldnames=['股票代码','股票名称','当前价','涨跌额','涨跌幅','年初至今','成交量','成交额','换手率','市盈率(TTM)','股息率','市值',
])
# 4.1 写入表头
csv_writer.writeheader()# 4.2 保存数据到Excel文件
# 4.2.1 创建一个空列表
content_list = []
"""
第1步 :发送请求 -> 模拟浏览器对于url发送请求
-模拟浏览器:headers 请求头从浏览器开发者工具中直接复制headers 是字典数据类型,键/值对形式
-请求网址-发送请求:需要requests 模块 -> pip install requests
"""
# 1.模拟浏览器
headers = {'Cookie' : 'cookiesu=901717811205751; Hm_lvt_1db88642e346389874251b5a1eded6e3=1717811218; device_id=fa5d0fc904c2d239c37239660f3f81e9; xq_a_token=ce05ae9ba331f0a4ebcd99207febf59b0b071ba8; xqat=ce05ae9ba331f0a4ebcd99207febf59b0b071ba8; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOjczMjE3OTE1NjAsImlzcyI6InVjIiwiZXhwIjoxNzIwNDA0NjYxLCJjdG0iOjE3MTc4MTI2NjE1OTIsImNpZCI6ImQ5ZDBuNEFadXAifQ.SeDDdnuih-A6rqJn7Nx2j_8XXDhUnp0SXp-XDTcC3klFq-CBfl2tyGepSoqx94gKV_Wp-amu00Wq1_rQ4Am6KISJlO1AB0Vk4E5d03E_DcC_jyFy-4mm25urTeN2h95JSmPoihAz4NjtddS8fkce8EQAE0ZS3BUFysm_G44_il_fAEiDApf2Mo2_BpBarLiffvGOMR5aV_kzpAipph_7DcMC0DMUuZFPp3F-LimBkrLxczVt8lda6Nf9UGDfn4QDrNJidrFZUcfJ3CGruVDty3HdgwsNrpcmSXE1OsseZPwsj_CzWoNBXULskr1D_VnxnqWPtjiOWhuMaAASAQGKoQ; xq_r_token=cc0f33963313bf4d82d1ec9471ab59f91b15e828; xq_is_login=1; u=7321791560; snbim_minify=true; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1717812883','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
}# 多页采集
for page in range(1,168):print(f'正在采集第{page}页的数据')# 2.请求网址url = f'https://stock.xueqiu.com/v5/stock/screener/quote/list.json?page={page}&size=30&order=desc&order_by=percent&market=CN&type=sh_sz'# 3.发送请求response = requests.get(url=url,headers=headers)print(response)# 返回 <Response [200]> 表示发送请求成功"""第2步:获取数据获取数据 ->获取服务器返回响应数据<整个数据>-response.test()    获取响应文本数据-response.json()    获取响应json数据-response.content() 获取响应二进制数据(保存图片、视频、音频、特定模式文件的时候使用)第3步:解析数据 ->提取我们需要的数据解决数据方法根据获取数据来选择的:字典取值方法 -> 键值对取值(根据冒号左边的内容[键],提取冒号右边的内容【值】)"""json_data = response.json()# print(json_data)# print(json_data['data']['list'])# 第3步:解析数据 ->提取我们需要的数据for row in json_data['data']['list']:# print(row)# pprint(row)#格式化输出数据# break# 提取数据保存到字典里面,方便后面保存到表格中dit = {'股票代码':row['symbol'],'股票名称': row['name'],'当前价': row['current'],'涨跌额': row['chg'],'涨跌幅': row['percent'],'年初至今': row['current_year_percent'],'成交量': row['volume'],'成交额': row['amount'],'换手率': row['turnover_rate'],'市盈率(TTM)': row['pe_ttm'],'股息率': row['dividend_yield'],'市值': row['market_capital'],}# 保存数据csv_writer.writerow(dit)# 4.2.2 将数据添加到空列表中# content_list.append(dit)# print(dit)# 4.2.3 格式化数据# data = pd.DataFrame(content_list)# print(f'data:{data}')# 4.2.4 将数据写入文件# data.to_excel('雪球股票.xlsx',index=False)

码字不容易,看完请大家一键三连。谢谢

收集一下需求,有人想爬电影数据吗?想的欢迎在评论区留言。

小彩蛋:

1.安装第三方模块

2.格式化数据, 

# pprint(row)#格式化输出数据 的效果

3.批量替换小技巧

排量替换方法:1.选择替换的内容2.Ctrl + R3.输入正则命令进行需要替换的内容:.* ->匹配 : 冒号后的所有内容 , (.*?): ->匹配加引号  (.*) ->匹配加引号,逗号,   ->替换成 逗号             '$1':              '$2',4. 点 .* 按钮,最后点 Replace 或 Replace All 按钮 进行替换

4.F12开发者工具的使用

码字不容易,看完请大家一键三连。谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/850288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3+vite插件开发

插件开发目的:由于我司使用的前端技术栈为vue3tsvite2.Xaxios,在前端代码框架设计初期,做了把axios挂载到proxy对象上的操作,具体可见我的另一篇文章vue3TS自动化封装全局api_ts 封装腾讯位置api-CSDN博客 现在可以实现vue2的类似this.$api.xxx去调用接口,但是vue2源码使用的是…

flutter日历范围选择器

1.传入日期跨度&#xff0c;选择上架日期时&#xff0c;自动显示下架日期 2.手动选择上架日期和下架日期(图中下架日期自动填了只需CalendarDateRangePicker在initState方法中使用_startDate widget.initialStartDate; _endDate widget.initialEndDate;&#xff0c;而不直接…

【python】OpenCV—Blob Detection(11)

学习来自OpenCV基础&#xff08;10&#xff09;使用OpenCV进行Blob检测 文章目录 1、cv2.SimpleBlobDetector_create 中文文档2、默认 parameters3、配置 parameters附录——cv2.drawKeypoints 1、cv2.SimpleBlobDetector_create 中文文档 cv2.SimpleBlobDetector_create 是 O…

端午搞个零花钱,轻松赚取创业的第一桶金!2024最受欢迎的创业项目,2024新的创业机会

好好的端午节&#xff0c; 净给我添堵&#xff01; 本来我打算在端午节愉快的玩耍&#xff0c; 结果一大早起床却看到舍友在给一堆设备充电&#xff0c; 然后装的整整齐齐&#xff0c; 满满一书包。 我好奇他小子这是要干嘛&#xff1f; 不会是打算今天回去给亲朋好友准备…

【动态规划-BM79 打家劫舍(二)】

题目 BM79 打家劫舍(二) 描述 你是一个经验丰富的小偷&#xff0c;准备偷沿湖的一排房间&#xff0c;每个房间都存有一定的现金&#xff0c;为了防止被发现&#xff0c;你不能偷相邻的两家&#xff0c;即&#xff0c;如果偷了第一家&#xff0c;就不能再偷第二家&#xff0c;如…

全面分析找不到msvcr120.dll,无法继续执行程序问题

在计算机使用过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中“找不到msvcr120.dll”就是常见的一种。那么&#xff0c;找不到msvcr120.dll是什么意思呢&#xff1f; 一&#xff0c;msvcr120.dll文件概述 msvcr120.dll 是 Microsoft Visual C Redistributable …

C++教程(003):运算符

3 运算符 作用&#xff1a;用于执行代码的运算 我们主要讲解以下运算符&#xff1a; 运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较&#xff0c;并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值 …

详解 Flink 的时间语义和 watermark

一、Flink 时间语义类型 Event Time&#xff1a;是事件创建的时间。它通常由事件中的时间戳描述&#xff0c;例如采集的日志数据中&#xff0c;每一条日志都会记录自己的生成时间&#xff0c;Flink 通过时间戳分配器访问事件时间戳Ingestion Time &#xff1a;是数据进入 Flink…

el-table合计行前置在首行,自定义合计行方法

背景 el-table原生合计行是在标签内增加show-summary属性&#xff0c;在表尾实现设计合计&#xff0c;且只对表格当前页面显示的列数据进行合计。element-UI效果如下图所示。 现要求在首行显示合计行&#xff0c;并自定义合计逻辑实现如下效果。 图示表格中&#xff0c;成本…

【渗透测试】DC-1靶机实战(上)漏洞扫描获取反弹shell

目录 一、范围界定 二、信息收集 三、目标识别 1&#xff09;主机发现 2&#xff09;端口扫描 四. 服务枚举 1&#xff09;网站首页 2&#xff09;Web指纹识别 3&#xff09;nikto报告 4&#xff09;robots.txt 5&#xff09;UPGRADE.txt 五. 漏洞映射 1&#xff…

万字长文|OpenAI模型规范(全文)

本文是继《OpenAI模型规范概览》之后对OpenAI Model Spec的详细描述&#xff0c;希望能对各位从事大模型及RLHF研究的朋友有帮助。万字长文&#xff0c;建议收藏后阅读。 一、概述 在AI的世界里&#xff0c;确保技术的行为符合我们的期望至关重要。OpenAI最近发布了一份名为Mo…

今天是放假带娃的一天

端午节放假第一天 早上5点半宝宝就咔咔乱叫了&#xff0c;几乎每天都这个点醒&#xff0c;准时的很&#xff0c;估计他是个勤奋的娃吧&#xff0c;要早起锻炼婴语&#xff0c;哈哈 醒来后做饭、洗锅、洗宝宝的衣服、给他吃D3&#xff0c;喂200ml奶粉、给他洗澡、哄睡&#xff0…

代码随想录算法训练营第二十二天

题目&#xff1a;216. 组合总和 III 这道题和上道题非常类似&#xff0c;大体框架一样只不过修改一下终止条件而已 值得注意的是其中的剪枝条件的设置 一是靠现有的元素和已经大于目标和的话就提前终止&#xff0c;另一个是其中循环那个剪枝可以记住 i < n - (k - path.s…

YOLOv8改进 | 卷积模块 | 在主干网络中添加/替换蛇形卷积Dynamic Snake Convolution

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 蛇形动态卷积是一种新型的卷积操作&#xff0c;旨在提高对细长和弯曲的管状结构的特征提取能力。它通过自适应地调整卷积核的权重&#xff0…

【每日刷题】Day59

【每日刷题】Day59 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1103. 分糖果 II - 力扣&#xff08;LeetCode&#xff09; 2. 1051. 高度检查器 - 力扣&#xff08…

电子纸在日化行业的全新应用

电子纸在日化行业的全新应用 项目背景 在一日化龙头企业他们的洗衣粉产线在AGV小车取料到运输到产品包装工序时&#xff0c;因为取料粉车无明显区分标识&#xff0c;但是产品系列有十大类。在未采用晨控电子纸之前现场采用一个转盘分为十个区域&#xff0c;取料工序上方会有一…

我也想拥有一个漂亮的网站

我也想拥有一个漂亮的网站 别人的公司几乎每个都有好看的网站&#xff0c;我也想拥有 如今在互联网上网站的存在已经非常的不稀奇了&#xff0c;可以在各大搜索引擎上面查到大量的网站&#xff0c;各行各业的网站都有&#xff0c;千奇百态&#xff0c;什么风格的网站都有…

JDK8安装详细教程教程-windows

&#x1f4d6;JDK8安装详细教程教程-windows ✅1. 下载✅2. 安装 ✅1. 下载 123云盘下载地址&#xff1a; JDK8 | JDK11 | JDK17 官方Oracle地址&#xff1a;https://www.oracle.com/java/technologies/downloads/archive/ ✅2. 安装 运行jdk-8u211-windows-x64.exe安装包文…

WebAPI AOP方式 异常方式 FilterAttribute、ActionFilterAttribute

》》 自定义异常处理特性 using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http.Filters;namespace WebApplication11 {/// <summary>/// 异常处理特性/// </sum…

278 基于Matlab GUI的中重频PD雷达仿真系统

基于Matlab GUI的中重频PD雷达仿真系统。具有26页文档报告。仿真雷达信号的发射、传播、散射、接收、滤波、信号处理、数据处理的全部物理过程&#xff0c;因此应当实现对雷达发射机、天线、接收机、回波信号处理、数据处理的建模与仿真。程序已调通&#xff0c;可直接运行。 2…