吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11221|回复: 51
收起左侧

[Python 转载] Python爬取某股票网站

  [复制链接]
老嬴政 发表于 2020-6-6 08:03
本帖最后由 老嬴政 于 2020-6-6 08:12 编辑

目标:
爬取所有股票的的成交量和MA值并导出EXCEL

股票成交量和MA

股票成交量和MA


思路:
先爬取所有股票的股票代码,因为每一个股票的网址格式差不多,都是https://xueqiu.com/S/股票代码

股票代码

股票代码

在每一个股票页面右键开发者工具,点击network,再点击日K
一顿排查后会发现这个接口网址

json接口

json接口
symbol=SH688021&begin=1591247470066&period=day&type=before&count=-142&indicator=kline,pe,pb,ps,pcf,market_capital,agt,ggt,balance
https://stock.xueqiu.com/v5/stock/chart/kline.json?symbol=SH688021&begin=1591247470066&period=day&type=before&count=-142&indicator=kline,pe,pb,ps,pcf,market_capital,agt,ggt,balance


这个接口返回股票的一些基础数据,MA可以算平均值算出来,成交量里面也有。把数据存下来做一下数据处理就好了


实操部分:
这里使用urllib3库来爬取


[Asm] 纯文本查看 复制代码
import urllib3
http = urllib3.PoolManager()

先爬取所有的股票代码
https://xueqiu.com/hq#exchange=CN&firstName=1&secondName=1_0用开发者工具的network选项卡,选中XHR,可以看到只有一条url,

爬取所有股票代码

爬取所有股票代码
可以看到一共有4388个股票,每页显示30条:

[Asm] 纯文本查看 复制代码
if (pageMax/30 > pageMax//30):
    pageMax = (pageMax//30)+1
else:
    pageMax = pageMax/30
这样就可以得到一共的页数
[Asm] 纯文本查看 复制代码
for x in range(1, pageMax):
     allStockNumberListUrl = f"https://xueqiu.com/service/v5/stock/screener/quote/list?page={x}&size=30&order=desc&orderby=percent&order_by=percent&market=CN&type=sh_sz&_=1589928406311"
     stockList = http.request('GET', allStockNumberListUrl).data
     for stockNumber in json.loads(stockList)['data']['list']:
         print(stockNumber['symbol'])
         print(stockNumber['volume'])

这样就可以打印出所有的股票代码和成交量,你可以选择存在列表里面或者文件里面都可以
当得到所有股票代码之后,就是和https://xueqiu.com/S/ 组合起来去访问每一个股票页面

[Asm] 纯文本查看 复制代码
for stockNumber in allStockNumberList:
    getStockDataUrl = f"https://stock.xueqiu.com/v5/stock/chart/kline.json?symbol={stockNumber}&begin={timestamp}&period=day&type=before&count=-142&indicator=kline,pe,pb,ps,pcf,market_capital,agt,ggt,balance"
    stockData = http.request('GET', getStockDataUrl, headers={
          "Cookie": ""#这里用你自己的cookie
    })
获取到的数据是json数据,要转成字典

[Asm] 纯文本查看 复制代码
stockDataJson = json.loads(stockData.data)['data']['item']


然后用for循环遍历这个字典

[Asm] 纯文本查看 复制代码
if (len(stockDataJson) >= MAnumber):
    for x in range(len(stockDataJson)-1, len(stockDataJson)-MAnumber-1, -1):
           allStockCloseValue.write(str(stockDataJson[x][5])+" ")
else:
     for y in range(len(stockDataJson)-1,-1,-1):
           allStockCloseValue.write(str(stockDataJson[y][5])+" ")
这里的MAnumber意思是,如果你想要MA100,就是100天价格的平均值,这个for循环是倒序的,从最后一个一直循环到倒数第100天,如果MAnumber是100。 但是有些股票没有100条数据,没有100条数据的,就把全部的数据都获取。因为这个MAnumber是最大值。比如你想要MA10,MA20,MA30和MA100。 那你获取100条数据,就可以算10,20和30的了接下来就是把这些数据存进excel里面这里用一个叫 records 的库

records使用方法

records使用方法
我把使用方法放上来只要把数据整合好成一个数组夹字典就好了
[Asm] 纯文本查看 复制代码
MAResult = round_up(sum(close[0:userMA])/len(close[0:userMA]))
def round_up(value):
    return round(value * 100) / 100.0

userMA是你要显示出来的MAnumber,比如你想要显示MA10,那userMA就是10close是一个存所有收盘价的列表
楼楼的程序最终运行结果是这样的

运行结果

运行结果
源码:注意:源码写的非常非常非常乱,完全没有注释,很多重复没意义的代码,时间复杂度非常高,大佬轻喷 StockSpider.7z (4 KB, 下载次数: 204)

免费评分

参与人数 11吾爱币 +15 热心值 +7 收起 理由
uilyuan + 1 + 1 热心回复!
richwei + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yufei8051 + 1 我很赞同!
0821fzh + 1 + 1 谢谢@Thanks!
huizzaii + 1 热心回复!
泳诗 + 1 我很赞同!
t101411 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
在路上的人 + 1 + 1 用心讨论,共获提升!
处女-大龙猫 + 1 谢谢@Thanks!
yu7676 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 老嬴政 发表于 2020-6-6 12:11
40aaa 发表于 2020-6-6 10:37
我就想问问这个时间是多久的?之前有个股票相关的是一个月之前的数据,根本不管啥用

运行一次就会爬取最新的数据
pj2233++ 发表于 2020-7-18 15:06
python和股市小白 我最近就在想,如何监控所有股票,当达到一个标准以后能够提出预警,这样就能大大增加选股的效率,很幸运看到这个帖子
yu7676 发表于 2020-6-6 08:44
pdc9911 发表于 2020-6-6 08:45
朕已阅。
aqwaqw 发表于 2020-6-6 08:57
朕已阅。
处女-大龙猫 发表于 2020-6-6 09:02
大神, 评分学习
yjn866y 发表于 2020-6-6 09:14
过来看看,,谢谢分享
飘浮 发表于 2020-6-6 09:20
看起来还不错。。
youjinglanling 发表于 2020-6-6 09:20
学习了,有用
会唱歌的鬼 发表于 2020-6-6 09:48
学习思想
40aaa 发表于 2020-6-6 10:37
我就想问问这个时间是多久的?之前有个股票相关的是一个月之前的数据,根本不管啥用
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 06:41

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表