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

前言

爬取 雪球网的股票数据
[环境使用]:
    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开发者工具的使用

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

武汉理工大学嵌入式系统应用之临时抱佛脚复习

其实大学很多课程的期末冲刺复习非常简单&#xff0c;就是在大脑中构建一个redis数据库就行了&#xff0c;缓存下一大堆键值对&#xff0c;然后考试的时候输出&#xff0c;很没意思。 嵌入式系统的定义 以应用为中心&#xff0c;以计算机技术为基础&#xff0c;软件硬件可裁剪…

基于Python的北京天气数据可视化分析

项目用到库 import numpy as np import pandas as pd import datetime from pyecharts.charts import Line from pyecharts.charts import Boxplot from pyecharts.charts import Pie,Grid from pyecharts import options as opts from pyecharts.charts import Calendar 1.2…

【Vue】——组件的注册与引用

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

大泽动力30KW静音汽油发电机

安全操作&#xff1a; 在使用前&#xff0c;确保发电机放置在通风良好、干燥、无易燃物品的地方。 避免在发电机运行时触摸其热表面或运转部件&#xff0c;以免烫伤或受伤。 遵循发电机的启动和停机程序&#xff0c;不要随意操作。 燃油管理&#xff1a; 使用高质量的汽油&…

【C/C++】IO流

目录 前言&#xff1a; 一&#xff0c;C语言的I/O流 二&#xff0c;C的I/O流 2-1&#xff0c;C标准IO流 2-2&#xff0c;IO流的连续输入 前言&#xff1a; “流”即是流动的意思&#xff0c;是物质从一处向另一处流动的过程&#xff0c;是对一种有序连续且具有方向性的数据…

地面站Mission planner

官方教程; Mission Planner地面站介绍 | Autopilot (gitbook.io) Mission Planner 功能/屏幕 — Mission Planner 文档 (ardupilot.org) 安卓或者windows软件下载地址&#xff1a; 地面站连接及使用 plane (cuav.net) 在完全装机后再进行各干器件的校准&#xff0c;没有组…

【十大排序算法】插入排序

插入排序&#xff0c;如一位细心的整理者&#xff0c; 她从序列的左端开始&#xff0c; 挨个将元素归位。 每当她遇到一个无序的元素&#xff0c; 便将它插入已经有序的部分&#xff0c; 直至所有元素有序排列。 她不张扬&#xff0c;却有效率&#xff0c; 用自己的方式&…

如何恢复已删除的文件(简单5 分钟方法)

本文介绍如何使用文件恢复程序恢复已删除的文件。其中包括与恢复已删除文件相关的提示。 如何恢复已删除的文件 从硬盘中恢复已删除的文件并不是一件疯狂的事情&#xff0c;但一旦意识到文件已被删除&#xff0c;尝试恢复会有所帮助。被删除的文件通常直到被其他文件覆盖后才真…

如何在Python中向Word文档添加段落

如何在Python中向Word文档添加段落 添加段落代码解析添加前与添加后 在这篇博客文章中&#xff0c;我们使用Python向Word文档添加段落。 添加段落 from docx import Document# 打开一个现有的Word文档 doc Document(rC:\Users\Administrator\Desktop\Word文档\example.docx)…

02Linux文件,目录,过滤,管道常用命令

Linux基础概述 Linux基础目录 Linux没有盘符这个概念, 只有一个顶级根目录 /, 所有文件都在它下面 在Windows系统中路径之间的层级关系使用/来表示在Linux系统中路径之间的层级关系使用/来表示,出现在开头的/表示根目录, /home/a.txt表示根目录下的home文件夹内有a.txt文件 …

Python中__面向对象__学习 (上)

目录 一、类和对象 1.类的定义 2.根据对象创建类 二、构造和析构 1.构造方法 &#xff08;1&#xff09;不带参数的构造方法 &#xff08;2&#xff09;带参数的构造方法 2.析构方法 三、重载 1.定制对象的字符串形式 &#xff08;1&#xff09;只重载__str__方法 …

STM32 HAL库开发——入门篇(3):OLED、LCD

源自正点原子视频教程&#xff1a; 【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教学视频教程 单片机 嵌入式_哔哩哔哩_bilibili 一、OLED 二、内存保护&#xff08;MPU&#xff09;实验 2.1 内存保护单元 三、LCD 3.1 显示屏分类 3.2 LCD简介 3.3 LCD…

【JAVASE】日期与时间类(上)

一&#xff1a;概述 从JAVA SE 8开始提供了java.time包&#xff0c;该包中有专门处理日期和时间的类。 LocalDate LocalDateTime 和LocalTime 类的对象封装和日期、时间有关的数据&#xff0c;这三个类都是final类&#xff0c;而且不提供修改数据的方法&#xff0c;即这…

ai辅助教育孩子

孩子经常躺在床上看手机是一个需要关注的问题&#xff0c;因为这不仅可能影响他们的视力健康&#xff0c;还可能影响睡眠质量和身体健康。以下是一些建议&#xff0c;帮助应对这一问题&#xff1a; 设定明确的规定&#xff1a; 与孩子一起制定使用手机的规则&#xff0c;如每天…

前端多人项目开发中,如何保证CSS样式不冲突?

在前端项目开发中&#xff0c;例如突然来了一个大项目&#xff0c;很可能就需要多人一起开发&#xff0c;领导说了&#xff0c;要快&#xff0c;要快&#xff0c;要快&#xff0c;你们给我快。然后下面大伙就一拥而上&#xff0c;干着干着发现&#xff0c;一更新代码&#xff0…

LiDAR360MLS 7.2.0 雷达点云数据处理软件功能介绍

新增模块和功能: 支持手持、背包数据的解算 SLAM解算成功率提升 SLAM解算效率提升 采集端与后处理端保持一致 赋色优化 新增平面图模块 新增平面图全自动矢量化功能 新增平面图矢量一键导出DXF功能 新增平面图正射影像一键导出功能 支持交叉、垂直绘制 支…

添加west扩展命令

使用west工具的帮助命令&#xff0c;west -h&#xff0c;不仅可以列出west工具的内置命令&#xff0c;也可以列举当前工程中实现的扩展命令&#xff0c;如build&#xff0c;flash等。 本文将介绍如何添加扩展命令。 west扩展命令的位置通过以下方式查找&#xff1a; 1. 首先找…

python-自幂数判断

[题目描述]&#xff1a; 自幂数是指&#xff0c;一个N 位数&#xff0c;满足各位数字N 次方之和是本身。例如&#xff0c;153153 是 33 位数&#xff0c;其每位数的 33 次方之和&#xff0c;135333153135333153&#xff0c;因此 153153 是自幂数&#xff1b;16341634 是 44 位数…

react的自定义组件

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

Springboot 通过SSE 实现实时消息返回

网上搜了好多都是用 SseEmitter 实现的,自己搭的demo确实也可以了,但是我项目里有一个过滤器,死活配置都不行,终于用google搜了一下,第一篇帖子便解决了这个问题,代码和大佬链接如下: https://github.com/CodingChaozhang/spring_boot_practice_demo/blob/master/springboot_s…