一、爬取目标
二、完整源码
#""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
#
# Copyright (c) 2024 愤怒的it男, All Rights Reserved.
# FileName : code.py
# Date : 2024.01.18
# Author : 愤怒的it男
# Version : 1.0.0
# Node : 欢迎关注微信公众号【愤怒的it男】
#
#""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
import csv
import json
import requests
from prettytable import PrettyTable
def getData(baseUrl, headers):
response = requests.get(url=baseUrl, headers=headers)
data = json.loads(response.text)['data']['diff']
result = []
for key, value in data.items():
value['f2'] = '%.2f' % (value['f2']/100)
value['f3'] = '%.2f' % (value['f3']/100) + '%'
value['f4'] = '%.2f' % (value['f4']/100)
value['f5'] = '%.2f' % (value['f5']/10000) + '万'
value['f6'] = '%.2f' % (value['f6']/100000000) + '亿'
value['f7'] = '%.2f' % (value['f7']/100) + '%'
value['f15'] = '%.2f' % (value['f15']/100)
value['f16'] = '%.2f' % (value['f16']/100)
value['f17'] = '%.2f' % (value['f17']/100)
value['f18'] = '%.2f' % (value['f18']/100)
value['f10'] = '%.2f' % (value['f10']/100)
value['f8'] = '%.2f' % (value['f8']/100) + '%'
value['f9'] = '%.2f' % (value['f9']/100)
value['f23'] = '%.2f' % (value['f23']/100)
result.append([key,value['f12'],value['f14'],value['f2'],value['f3'],value['f4'],value['f5'],value['f6'],value['f7'],value['f15'],value['f16'],value['f17'],value['f18'],value['f10'],value['f8'],value['f9'],value['f23']])
return result
def printData(result):
table = PrettyTable()
table.field_names = ["序号", "代码", "名称", "最新价", "涨跌幅", "涨跌额", "成交量(手)", "成交额", "振幅", "最高", "最低", "今开", "昨收", "量比", "换手率", "市盈率(动态)", "市净率"]
table.add_rows(result)
print(table)
def saveData(result):
with open('A股股票数据.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerows(result)
def main():
baseUrl = 'https://22.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=6000&po=1&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048'
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'}
result = getData(baseUrl, headers)
printData(result)
saveData(result)
if __name__== "__main__" :
main()
三、源码简析
由于原始的请求数据为整数,需要转化为保留两位的小数才是最终正确的数字,因此可以通过'%.2f' % num
进行保留两位小数的转换操作,转换后为字符串类型。
for key, value in data.items():
value['f2'] = '%.2f' % (value['f2']/100)
value['f3'] = '%.2f' % (value['f3']/100) + '%'
value['f4'] = '%.2f' % (value['f4']/100)
value['f5'] = '%.2f' % (value['f5']/10000) + '万'
value['f6'] = '%.2f' % (value['f6']/100000000) + '亿'
value['f7'] = '%.2f' % (value['f7']/100) + '%'
value['f15'] = '%.2f' % (value['f15']/100)
value['f16'] = '%.2f' % (value['f16']/100)
value['f17'] = '%.2f' % (value['f17']/100)
value['f18'] = '%.2f' % (value['f18']/100)
value['f10'] = '%.2f' % (value['f10']/100)
value['f8'] = '%.2f' % (value['f8']/100) + '%'
value['f9'] = '%.2f' % (value['f9']/100)
value['f23'] = '%.2f' % (value['f23']/100)
四、爬取结果
+------+--------+-------------+---------+---------+--------+------------+---------+--------+---------+---------+---------+---------+---------+--------+----------------+---------+
| 序号 | 代码 | 名称 | 最新价 | 涨跌幅 | 涨跌额 | 成交量(手) | 成交额 | 振幅 | 最高 | 最低 | 今开 | 昨收 | 量比 | 换手率 | 市盈率(动态) | 市净率 |
+------+--------+-------------+---------+---------+--------+------------+---------+--------+---------+---------+---------+---------+---------+--------+----------------+---------+
| 0 | 837403 | N康农 | 17.97 | 60.45% | 6.77 | 13.61万 | 2.58亿 | 25.89% | 20.79 | 17.89 | 19.62 | 11.20 | 5487.59 | 63.86% | 89.23 | 2.70 |
| 1 | 601033 | N永兴 | 22.21 | 37.10% | 6.01 | 91.68万 | 20.79亿 | 16.11% | 24.52 | 21.91 | 22.29 | 16.20 | 0.00 | 63.01% | 22.61 | 1.98 |
| 2 | 839167 | 同享科技 | 27.43 | 30.00% | 6.33 | 14.54万 | 3.61亿 | 32.46% | 27.43 | 20.58 | 20.79 | 21.10 | 2.17 | 22.34% | 27.66 | 5.62 |
| 3 | 870726 | 鸿智科技 | 23.47 | 29.96% | 5.41 | 3.63万 | 0.79亿 | 29.62% | 23.47 | 18.12 | 18.12 | 18.06 | 3.15 | 37.63% | 29.45 | 4.10 |
| 4 | 835207 | 众诚科技 | 12.49 | 23.54% | 2.38 | 11.48万 | 1.36亿 | 33.93% | 13.14 | 9.71 | 10.19 | 10.11 | 2.32 | 32.59% | -165.23 | 3.49 |
| 5 | 300081 | 恒信东方 | 9.71 | 20.02% | 1.62 | 110.06万 | 10.03亿 | 16.69% | 9.71 | 8.36 | 8.60 | 8.09 | 3.38 | 21.72% | -43.88 | 3.38 |
| 6 | 837821 | 则成电子 | 18.79 | 18.55% | 2.94 | 6.03万 | 1.05亿 | 30.16% | 19.81 | 15.03 | 15.84 | 15.85 | 1.98 | 33.01% | 52.85 | 2.67 |
| 7 | 832876 | 慧为智能 | 16.50 | 17.35% | 2.44 | 6.99万 | 1.04亿 | 21.91% | 16.58 | 13.50 | 14.10 | 14.06 | 1.30 | 32.90% | 97.53 | 4.17 |
| 8 | 301205 | 联特科技 | 102.50 | 17.06% | 14.94 | 12.22万 | 11.62亿 | 20.47% | 103.50 | 85.58 | 86.24 | 87.56 | 3.82 | 17.98% | 465.90 | 9.39 |
| 9 | 873132 | 泰鹏智能 | 21.94 | 15.35% | 2.92 | 5.78万 | 1.21亿 | 22.92% | 22.50 | 18.14 | 18.78 | 19.02 | 1.60 | 50.72% | 28.96 | 6.11 |
| 10 | 834770 | 艾能聚 | 10.86 | 14.20% | 1.35 | 17.84万 | 1.85亿 | 19.24% | 11.28 | 9.45 | 9.47 | 9.51 | 1.57 | 27.10% | 19.30 | 2.56 |
| 11 | 300624 | 万兴科技 | 94.40 | 13.19% | 11.00 | 19.54万 | 17.50亿 | 21.53% | 98.99 | 81.03 | 81.99 | 83.40 | 2.71 | 16.24% | 149.83 | 9.61 |
| 12 | 836699 | 海达尔 | 16.45 | 13.06% | 1.90 | 2.71万 | 0.44亿 | 22.13% | 17.38 | 14.16 | 14.55 | 14.55 | 2.40 | 21.46% | 23.59 | 3.12 |
| 13 | 871245 | 威博液压 | 13.51 | 13.05% | 1.56 | 2.10万 | 0.28亿 | 25.10% | 14.62 | 11.62 | 11.85 | 11.95 | 4.42 | 9.25% | 29.75 | 2.06 |
| 14 | 871753 | 天纺标 | 21.44 | 12.25% | 2.34 | 13.44万 | 2.82亿 | 25.60% | 22.99 | 18.10 | 18.60 | 19.10 | 2.37 | 62.97% | 51.31 | 4.33 |
| 15 | 838701 | 豪声电子 | 14.50 | 11.97% | 1.55 | 5.36万 | 0.73亿 | 18.38% | 14.78 | 12.40 | 12.95 | 12.95 | 1.28 | 27.34% | 45.79 | 2.64 |
| 16 | 832110 | 雷特科技 | 20.35 | 11.81% | 2.15 | 1.53万 | 0.29亿 | 13.96% | 20.35 | 17.81 | 17.81 | 18.20 | 2.43 | 12.73% | 24.34 | 2.37 |
| 17 | 872351 | 华光源海 | 9.23 | 11.20% | 0.93 | 11.20万 | 0.99亿 | 18.07% | 9.60 | 8.10 | 8.25 | 8.30 | 2.15 | 29.19% | 24.33 | 1.94 |
| 18 | 836270 | 天铭科技 | 17.60 | 11.11% | 1.76 | 6.27万 | 1.06亿 | 21.59% | 18.20 | 14.78 | 15.00 | 15.84 | 3.77 | 28.21% | 24.34 | 3.87 |
| 19 | 300308 | 中际旭创 | 109.83 | 10.92% | 10.81 | 37.10万 | 38.50亿 | 13.25% | 109.95 | 96.83 | 97.04 | 99.02 | 2.27 | 4.95% | 51.03 | 6.50 |
| 20 | 838227 | 美登科技 | 28.89 | 10.82% | 2.82 | 2.28万 | 0.61亿 | 27.92% | 29.58 | 22.30 | 25.50 | 26.07 | 2.67 | 21.60% | 26.07 | 2.82 |
五、免责声明
本公众号所有源码均为个人学习所编写,仅可用于计算机技术学习及研究等合法行为,禁止利用本公众号的源码从事任何违反本国(地区)法律法规的业务,如有发现存在违法违规行为我会举报到网监部门。
原文始发于微信公众号(愤怒的it男):炒股神器!Python实时爬取A股所有股票的数据
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/234409.html