Python爬虫-抓取数据到可视化全流程的实现

 (ps:我也是在学习的过程中,欢迎各位小伙伴跟我一起交流,一起学习)

1、爬取目标网站:业绩预告_数据中心_同花顺财经

(ps:headers不会设置的可以看这篇:Python——爬虫 用requests.get获取网页内容为空 ’ ’_你隔壁的小王的博客-CSDN博客

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条数据符合预期,继续查看股票代码(这里使用正则表达式查询,可以看这篇里边对正则表达式进行了讲解:正则表达式+常用示例_你隔壁的小王的博客-CSDN博客

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

有问题欢迎大家跟我讨论!

  • 10
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你隔壁的小王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值