看ChatGPT是如何教我爬取上千家上市公司的股票代码

news2024/11/24 1:13:18

现在有一个这样的需求,要爬取雪球网上A股的股票名称、代码和总市值这些信息并把它保存到execl表格中。对于一个新手想学习爬虫,如何通过chatGPT来完成这个任务呢? alt

首先,我们把自己的需求详细的描述向ChatGPT提问,问题描写的越详细越好,例如: alt 然后,我们把代码复制到编辑器运行,如下图: alt 没有任何返回值,估计是出错了,我们先打印一下content的值看看,如下图: alt 的确是出错了。我在把出错的问题进行描述,再向ChatGPT进行提问。如下图: alt 上述的回答中解析了为什么会出现这种错误,并给出了解决方法。我们采用第一种方式,为代码添加请求头,再次执行。 alt 这次就成功把网页的内容返回了。但是页面中的内容并没有我们想要的信息。 alt

通过观察爬取的页面,刚打开页面是没有我们想要的信息,当我们点击了开始选股,才加载数据。

没有点击的
没有点击的
点击后的结果
点击后的结果

通过浏览器开发者工具,发现点击后,是请求以下这个地址,获取结果进行加载的。 alt alt

弄清楚了请求地址,我们再次向chatGPT提问。 alt

上述代码,它没有添加请求头,所以,我们要自行添加请求头

关键代码如下:

import requests

url = 'https://xueqiu.com/service/screener/screen?category=CN&exchange=sh_sz&areacode=&indcode=&order_by=symbol&order=desc&page=1&size=30&only_count=0&current=&pct=&mc=&volume=&_=1684212843562'

# 发送 HTTP 请求获取 JSON 数据
headers = {
    'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
response = requests.get(url, headers=headers)
data = response.json()




# 提取股票信息
stocks = data['data']['list']

# 遍历股票信息并输出股票名称和代码
for stock in stocks:
    name = stock['name']
    code = stock['symbol']
    print(name, code)

执行结果如下: alt

上述代码只是爬取单页的,现在我们要爬取多页的数据,把这个需求描述发给chatGPT,看它是如何解决的。 alt

上述代码,它没有添加请求头,所以,我们要自行添加请求头

关键代码:

import requests

def crawl_stock_data(page_num):
    url = f'https://xueqiu.com/service/screener/screen?category=CN&exchange=sh_sz&areacode=&indcode=&order_by=symbol&order=desc&page={page_num}&size=30&only_count=0&current=&pct=&mc=&volume=&_=1684212843562'

    # 发送 HTTP 请求获取 JSON 数据
    response = requests.get(url)
    data = response.json()

    # 提取股票信息
    stocks = data['data']['list']

    # 遍历股票信息并输出股票名称和代码
    for stock in stocks:
        name = stock['name']
        code = stock['symbol']
        print(name, code)

# 执行多页爬取数据
total_pages = 10  # 假设要爬取10页的数据
for page in range(1, total_pages + 1):
    crawl_stock_data(page)

下面就是把爬取的数据保存到execl中,再次把需求描述给chatGPT,看它是如何回复的: alt 这次又忘记添加请求头,于是,我提示它加上请求头。 alt 关键代码如下:

import requests
import pandas as pd

def crawl_stock_data(page_num):
    url = f'https://xueqiu.com/service/screener/screen?category=CN&exchange=sh_sz&areacode=&indcode=&order_by=symbol&order=desc&page={page_num}&size=30&only_count=0&current=&pct=&mc=&volume=&_=1684212843562'

    headers = {
        'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
    }
    
    # 发送 HTTP 请求获取 JSON 数据
    response = requests.get(url, headers=headers)
    data = response.json()

    # 提取股票信息
    stocks = data['data']['list']
    stocks_list =[{'name': item.get("name"),'symbol':item.get("symbol"), 'volume':item.get("volume")} for item in stocks ]
    # 创建DataFrame保存股票数据
    df = pd.DataFrame(stocks_list, columns=['name''symbol',"volume"])
    return df


# 执行多页爬取数据
total_pages = 50  # 假设要爬取10页的数据
dfs = []
for page in range(1, total_pages + 1):
    df = crawl_stock_data(page)
    print(df)
    dfs.append(df)

result_df = pd.concat(dfs, ignore_index=True)
# 保存数据到Excel文件
result_df.to_excel('stock_data.xlsx', index=False)

执行成功的结果如下: alt

代码是完成了我们的需求,但是代码缺乏异常捕捉,如果代码出现错误后,会整个代码停止执行。

总结

利用chatGPT学习爬虫是一个非常好的办法,只要我们把需求和问题向它描述,它都能分析错误和给出解决方法。大大的节省了收集资料的时间,提高了学习的效率。

本文由 mdnice 多平台发布

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

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

相关文章

数据库可视化神器,你在用哪一款呢

唠嗑部分 在我们日常开发中,作为开发者,与数据库是肯定要打交道的,比如MySQL,Oracle、sqlserver… 那么数据库可视化工具,你用什么呢?小白今天将常用地几款工具列一下,各位小伙伴如有喜欢的自…

亚马逊开放个人卖家验证入口?亚马逊卖家验证到底怎么搞?

亚马逊卖家账户的安全对于所有卖家来说都非常重要。如果卖家想要在亚马逊上长期稳定地发展,赚取更多的钱并推出更多热卖产品,就必须确保他们的亚马逊卖家账户安全,特别是一直存在的亚马逊账户验证问题。 近期,根据亚马逊官方披露的…

【VPX302】基于3U VPX总线架构的高性能数据预处理平台/XCKU115

板卡概述 VPX302是一款基于3U VPX总线架构的高性能数据预处理FMC载板,板卡具有1个FMC(HPC)接口,1个X8 GTH背板互联接口,可以实现1路PCIe x8;具有4路SRIO X4。板卡采用Xilinx的高性能Kintex UltraScale系列F…

简单实现远程访问Linux SVN服务

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

以太网、工业以太网和Profinet之间的区别

总的来说,以太网是一种局域网规范,工业以太网是应用于工业控制领域的以太网技术,Profinet是一种在工业以太网上运行的实时技术规范。 下面,我们来详细说说这三者的区别。 1.以太网 以太网是当今现有局域网采用的最通用的通信协议…

数据可视化-CSS3

CSS3 数据可视化 数据可视化是将数据转换为图形或图表的过程,以便更好地理解和分析数据。它是数据分析和数据科学中的重要组成部分,可以帮助人们更好地理解数据中的模式和趋势。 更好地理解数据:通过可视化数据,人们可以更好地…

告别腾讯企业邮箱:探寻多种可替代方案

腾讯企业邮箱凭借其直观的界面、qq和微信带来的大量基础用户以及作为常规腾讯企业邮箱帐户附加的各种免费生产力工具,在企业邮箱市场占据主导地位。但是,人们对腾讯如何使用您的电子邮件存在严重担忧,而且并不是每个人都喜欢腾讯企业邮箱界面…

ngrok实现内网穿透,vue项目invalid host header报错

目的:使自己的本地的vue项目可以在外网上访问。 本地访问:http://localhost:8080/ 外网访问:通过ngrok生成一个链接,这个链接在其他网络环境下都可以访问。 windows下安装 1.注册并下载ngrok,注册的时候需要验证码&am…

动手学习卷积神经网络(CNN)(一)---卷积运算

卷积神经网络可以直接从原始数据中学习其特征表示并完成最终任务,可以说卷积网络是“端”到“端”的思想,在整个学习流程中并进行认为的子问题划分,而是交给深度学习模型直接学得从原始输入到期望输出得映射。 卷积神经网络是包含卷积层&…

一个BLIP2加两个ChatGPT就能造一个机器人?KAUST提出具身智能框架LLM-Brain

最近,来自阿卜杜拉国王科技大学(KAUST)的研究团队开发了一种基于现有LLMs的机器人交互框架LLM-Brain,LLM-Brain可以直接将LLM作为机器人的大脑,并以此来构建一个以自我为中心的记忆和控制框架。 论文链接: …

【笔试强训选择题】Day18.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…

红队工具合集

一个 Red Team 攻击的生命周期,整个生命周期包括: 信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上再做持久化控制)、在所有攻击结束之后清理并退出战场。 相资 信息搜集 http…

自信裸辞:一晃 ,失业都3个月了.....

最近,找了很多软测行业的朋友聊天、吃饭 ,了解了一些很意外的现状 。 我一直觉得他们技术非常不错,也走的测开/管理的路径;二三月份裸辞的,然后一直在找工作,现在还没找到工作 。 经过我的分析&#xff0…

OpenVINO 2022.3实战三:POT API实现图像分类模型 INT8 量化

OpenVINO 2022.3实战三:POT API实现图像分类模型 INT8 量化 1 准备需要量化的模型 这里使用我其他项目里面,使用 hymenoptera 数据集训练好的 MobileNetV2 模型,加载pytorch模型,并转换为onnx。 import os from pathlib import…

鸿蒙Hi3861学习十八-DevEco Device Tool环境搭建

一、简介 在之前的文章中,我们是通过在windows下烧录,在ubuntu下编译的方式进行开发。今天我们同样是采用windowsubuntu混合环境进行开发。为什么要采用这种方式呢?因为就目前而言,大部分的开发板还不支持在Windows环境下进行编译…

典型的高可用设计(二):MySQL

一、高可用模式 MySQL数据库提供了数据库建的复制能力,做到了多个数据库同时拥有同一个数据副本,保证了数据的安全性,一台数据库服务器出现问题,其他数据库可以做到数据不丢失。MySQL的服务高可用设计也是以数据库复制能力为基础&…

云计算专业怎么样,大学应届生学的话难不难?

云计算专业学起来挺难的,一般人建议不要轻易尝试!!! 虽然IT行业一直以来发展前景、技术更新、新领域的开发或者新概念的提出等各方面都还不错,云计算也是当下非常火的一个就业方向,很多人也非常想进入云计…

IT系统方案大纲模版,以智慧工地系统为例

# 咖米智慧工地解决方案 ## 第1章 智慧工地系统概述 ### 1.1应用背景 ### 1.2需求分析 ### 1.3总体目标 ## 第2章 系统总体设计 ### 2.1设计理念 ### 2.2设计依据 ### 2.3设计架构 ### 2.4系统描述 ### 2.5系统特点 ## 第3章 详细设计 ### 3.1工地远程监控子系统 #### 3.1.1需求…

一分钟了解乐观锁、悲观锁、共享锁、排它锁、行锁、表锁以及使用场景

大家好,我是冰点,今天给大家带来,关于MySQL中的锁的使用。 我首先提个问题,大家知道什么是 乐观锁、悲观锁、共享锁,、排它锁、行锁、表锁,以及每种锁的使用场景吗? !! 背景:最近在各…

Unity 使用 VSCode 作为默认编辑器,解决没有代码提示,智能补全功能

文章目录 删除现有编辑器配置选择 VSCode 作为代码编辑器代码补全和智能提示 删除现有编辑器配置 首先打开你的项目文件夹,需要把这几个文件删掉,稍后重新生成~ 选择 VSCode 作为代码编辑器 打开 Edit - Preference: 选择 External Script…