目录
1、爬取目标网站:业绩预告_数据中心_同花顺财经
(ps:headers不会设置的可以看这篇:Python 用requests.get获取网页内容为空 ’ ’)
import pandas as pd import numpy as np import matplotlib.pyplot as plt import re import requests##把各种可能用到的包提前导好 headers={ \'Accept\': \'text/html,*/*; q=0.01\', \'hexin-v\': \'A2C11EVPFXAhNKl0PUpM6xp8MWU2aUUO5k-YOdpwLngMrQpTgnkUwzZdaMMp\', \'Referer\': \'http://data.10jqka.com.cn/financial/yjyg/\', \'Cookie\':\'对应填写\', \'User-Agent\':\'对应填写\' } url=\"http://data.10jqka.com.cn/ajax/yjyg/date/2021-12-31/board/ALL/field/enddate/order/desc/page/{}/ajax/1/free/1/\" result = \'\' for i in range(1,5): result += requests.get(url.format(i), headers=headers).text result
爬取成功,检查数据:
2、获取序号、股票代码、等你所需要的信息
index = re.findall(\'<td>(.*)</td>\',result) index
148条数据符合预期,继续查看股票代码(这里使用正则表达式查询,可以看这篇里边对正则表达式进行了讲解:正则表达式+常用示例)
stock_code = re.findall(\'class=\"stockCode\">(.*)</a>\',result) print(stock_code)
3、组成DataFrame
data = pd.DataFrame({ \"stock_code\":stock_code, \"stock_name\":stock_name, \"performance\":performance, \"summary\":summary }, index=index) data
组合成功
4、处理数据
使用正则筛选出净利润和增长幅度
data[\'start_profit\'] = data[\'summary\'].str.extract(\'(-{0,1}\\d{0,10}\\.{0,1}\\d{0,10})万元\') data[\'end_profit\'] = data[\'summary\'].str.extract(\'至(-{0,1}\\d{0,10}\\.{0,1}\\d{0,10})万元\') data[\"start_range\"] = data[\'summary\'].str.extract(\'(\\d{0,5}\\.{0,1}\\d{0,5})%\') + \"%\" data[\"end_range\"] = data[\'summary\'].str.extract(\'至(\\d{0,5}\\.{0,1}\\d{0,5})%\') + \"%\" data.head()
判断盈利情况:
def if_profit(x): if x in [\'业绩预降\', \'业绩大幅上升\', \'业绩大幅下降\', \'业绩预盈\', \'业绩预增\', \'预计扭亏\']: return 1 if x in [\'预计减亏\', \'不确定\',\'业绩预亏\', \'预计增亏\', \'预计续亏\']: return -1 return 0 data[\'is_profit\'] = data.apply(lambda x : if_profit(x[\"performance\"]),axis=1) data.head() ##计算盈利多少 yingli = (data[\'is_profit\'] == 1).sum() yingli ##亏损多少 kuisun = (data[\'is_profit\'] == -1).sum() kuisun
通过绘制饼图实现可视化:
plt.pie([yingli,kuisun], labels=[\'盈利\',\'亏损\'], autopct=\'%.2f%%\') font={ \"family\":\"kaiti\", \"size\":\"15\" } plt.rc(\"font\",**font) plt.title(\'148家公司盈利和亏损情况占比\') plt.show()
© 版权声明
THE END
暂无评论内容