Python抓取数据到可视化全流程的实现过程

目录

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

 爬取成功,检查数据:

Python抓取数据到可视化全流程的实现过程

2、获取序号、股票代码、等你所需要的信息

index = re.findall(\'<td>(.*)</td>\',result)
index

Python抓取数据到可视化全流程的实现过程

 148条数据符合预期,继续查看股票代码(这里使用正则表达式查询,可以看这篇里边对正则表达式进行了讲解:正则表达式+常用示例

stock_code = re.findall(\'class=\"stockCode\">(.*)</a>\',result)
print(stock_code)

Python抓取数据到可视化全流程的实现过程

3、组成DataFrame

data = pd.DataFrame({
    \"stock_code\":stock_code,
    \"stock_name\":stock_name,
    \"performance\":performance,
    \"summary\":summary
}, index=index)
 
data

Python抓取数据到可视化全流程的实现过程

 组合成功

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()

Python抓取数据到可视化全流程的实现过程

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容