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

news2025/1/19 14:09:27

前言

爬取 雪球网的股票数据
[环境使用]:
    python 3.12 解释器
    pycharm 编辑器
【模块使用】:
    import requests  -->数据请求模块 要安装 命令 pip install requests
    import 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_sz
                     https://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 + R
    3.输入正则命令进行需要替换的内容
        :.* ->匹配 : 冒号后的所有内容 , (.*?): ->匹配加引号  (.*) ->匹配加引号,逗号
        ,   ->替换成 逗号             '$1':              '$2',
    4. 点 .* 按钮,最后点 Replace 或 Replace All 按钮 进行替换

1.效果

2.代码

'''
爬取 雪球网的股票数据
[环境使用]:
    python 3.12 解释器
    pycharm 编辑器
【模块使用】:
    import requests  -->数据请求模块 要安装 命令 pip install requests
    import 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_sz
                     https://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 + R
    3.输入正则命令进行需要替换的内容
        :.* ->匹配 : 冒号后的所有内容 , (.*?): ->匹配加引号  (.*) ->匹配加引号,逗号
        ,   ->替换成 逗号             '$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 + R
    3.输入正则命令进行需要替换的内容
        :.* ->匹配 : 冒号后的所有内容 , (.*?): ->匹配加引号  (.*) ->匹配加引号,逗号
        ,   ->替换成 逗号             '$1':              '$2',
    4. 点 .* 按钮,最后点 Replace 或 Replace All 按钮 进行替换

4.F12开发者工具的使用

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

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

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

相关文章

react的自定义组件

// 自定义组件(首字母必须大写) function Button() {return <button>click me</button>; } const Button1()>{return <button>click me1</button>; }// 使用组件 function App() {return (<div className"App">{/* // 自闭和引用自…

【全部更新完毕】2024全国大学生数据统计与分析竞赛B题思路代码文章教学数学建模-电信银行卡诈骗的数据分析

电信银行卡诈骗的数据分析 摘要 电信银行卡诈骗是当前社会中严重的犯罪问题&#xff0c;分析电信银行卡交易数据&#xff0c;找出高风险交易特征&#xff0c;建立预测模型&#xff0c;将有助于公安部门和金融机构更好地防范诈骗行为&#xff0c;保障用户的财产安全。 针对问…

Golang | Leetcode Golang题解之第131题分割回文串

题目&#xff1a; 题解&#xff1a; func partition(s string) (ans [][]string) {n : len(s)f : make([][]int8, n)for i : range f {f[i] make([]int8, n)}// 0 表示尚未搜索&#xff0c;1 表示是回文串&#xff0c;-1 表示不是回文串var isPalindrome func(i, j int) int8…

【Python】常见的第三方库及实例

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 库介绍 Python是通过模块来体现库&#xff0…

底板外设倒灌到处理器分析

在嵌入式系统中&#xff0c;底板外设通常与处理器通过各种接口&#xff08;如UART、SPI、I2C、GPIO等&#xff09;进行连接。这些外设可能包括传感器、执行器、存储器、通信模块等。倒灌是指当外设向处理器提供的信号电平超出了处理器能够接受的范围&#xff0c;导致处理器无法…

让 AI 写高考作文丨10 款大模型 “交卷”,实力水平如何?

文章部分素材来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 前言 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的未来科技&#xff0c;而是逐渐融入我们日常生活的实用工具。从智能语音助手到自动驾驶汽车&#xff0c…

Redis 实现持久化

Redis ⽀持 RDB ( 定期备份 ) 和 AOF ( 实时备份 ) 和 混合持久化 (结合RDB 和 AOF 的特点) 持久化机制&#xff0c;持久化功能有效地避免因进程退出造成数据丢失问题&#xff0c; 当下次重启时利⽤之前持久化的⽂件即可实现数据恢复。 RDB&#xff08;Redis DataBase&#xff…

Python深度学习基于Tensorflow(16)基于Tensorflow的对话实例

文章目录 基础数据清洗数据生成词汇表定义分词器并制作数据集构建Transformer模型并训练模型推理 Tensorflow 的核心就是注意力机制&#xff0c;在之前详细的介绍过&#xff0c;具体可以看这个&#xff1a;Python深度学习基于Tensorflow&#xff08;9&#xff09;注意力机制_te…

【传知代码】Noise2Noise图像去噪(论文复现)

前言&#xff1a;在数字时代&#xff0c;图像已成为我们记录生活、传达信息、探索世界的重要媒介。然而&#xff0c;随着摄影技术的飞速发展&#xff0c;图像噪声——这一影响图像质量的顽疾&#xff0c;始终困扰着我们。Noise2Noise图像去噪技术为我们提供了一种全新的解决方案…

【设计模式】结构型-装饰器模式

在代码的海洋深处迷离&#xff0c;藏匿着一片神奇之地。那里有细腻的线条交错&#xff0c;是装饰器的奇妙艺术。 文章目录 一、登录的困境二、装饰器模式三、装饰器模式的核心组成部分四、运用装饰器模式五、装饰器模式的应用场景六、小结推荐阅读 一、登录的困境 假设我们有…

【经验分享】搭建跨境电商那个独立站必备的功能模块以及实现

搭建跨境电商独立站时&#xff0c;需要确保网站具备一系列关键的功能板块&#xff0c;以提供用户友好的购物体验并确保业务的顺利进行。以下是这些功能板块的详细归纳&#xff1a; 注册登录与身份验证&#xff1a; 用户注册与登录&#xff1a;允许用户创建账户&#xff0c;通过…

CST纳米光学 --- LSPR局部等离子激元共振,消光截面ECS,法诺共振

这期我们用自带的Drude散射粒子&#xff0c;计算消光截面。 查看模型&#xff0c;内核是Silica二氧化硅&#xff0c;正常的介质材料&#xff0c;半径是38纳米&#xff1a; 外围是Drude模型的金属材料包裹&#xff0c;半径48纳米&#xff0c;该材料的参数可由宏Materials->Cr…

洁净室气流流型分类及气流流型可视化验证

洁净室气流 流型的分类 洁净室是空气悬浮粒子浓度受控的房间&#xff0c;其建造和使用方式可最大限度减少房间进入的、产生的和滞留的粒子。房间内的温度、湿度、压力等其他相关参数均按要求受控&#xff08;ISO14644-6&#xff09;。 #深度好文计划# 一.洁净室的四大技术要素…

招募来袭 | 与热爱技术的谷歌开发者一起创造精彩

写在前面 技术的进步在不断推动着世界发展。从 Android、Flutter 等产品的稳步更新迭代&#xff0c;到秉承着负责任的态度对 AI 进行探索&#xff0c;我们通过每一次的技术跃进&#xff0c;帮助大家打开新的视野&#xff0c;激发更多的灵感&#xff0c;将我们的工具和平台打造成…

线控转向 0 -- 线控转向介绍和专栏规划

一、线控转向介绍 高阶自动驾驶核心部件&#xff1a;英创汇智线控转向解决方案 _北京英创汇智科技有限公司 (trinova-tech.com) 线控转向的系统组成详细介绍大家可以看上面这个链接&#xff1b;我这里也只从里面截取一些图片&#xff0c;简单说明。 1、结构组成 线控转向分为…

【前端基础】CSS介绍|CSS选择器|常用CSS

目录 一、CSS介绍 1.1 什么是CSS 1.2 基本语法规范 1.3 引⼊⽅式 1.4 规范 &#x1f4a1;二、CSS选择器 1. 标签选择器 2. class选择器 3. id选择器 4. 复合选择器 5. 通配符选择器 三、常用CSS 3.1 color 3.2 font-size 3.3 border 3.4 width/height 3.5 padd…

C51单片机 串口打印printf重定向

uart.c文件 #include "uart.h"void UartInit(void) //4800bps11.0592MHz {PCON | 0x80; //使能波特率倍速位SMODSCON 0x50; //8位数据,可变波特率。使能接收TMOD & 0x0F; //清除定时器1模式位TMOD | 0x20; //设定定时器1为8位自动重装方式TL1 0xF4; //设…

BUG解决: Zotero 文献GBT7714无法正常调用

1. 下载csl文件 网上有推荐直接下载现成版本的&#xff0c;比如参考资料【1】的蓝奏云文件&#xff0c;但是还是无法实现功能&#xff08;空文档中可以用了&#xff09;。 2. Github版本 也有说网盘版本和那个 Juris-M 的 CSL bug 太多的。 总结 后面发现&#xff0c;只需…

【生产排查】解决 Kettle 没有运行日志的问题

文章目录 背景排查解决第 1 步:修改 kettle-service.conf,添加日志配置第 2 步:使用最新配置文件重启 kettle第 3 步:验证日志配置是否生效背景 🚀 项目使用 Kettle 作为 ETL 工具,从外部系统中抽取数据、转换数据、并最终加载到本项目的数据库中。 😂 存在的问题:据…

JVM学习-详解类加载器(二)

双亲委派机制 双亲委派优势 避免类的重复加载&#xff0c;确保一个类的全局唯一性 Java类随着它的类加载器一起具备了一种带有优先级的层次关系&#xff0c;通过这种层次关系可以避免类的重复加载&#xff0c;当父类已经加载了该类&#xff0c;就没有必要子ClassLoader再加载…