python对于会计核算_利用Python处理东方财富企业财务数据

0.背景

由于工作需要,最近在研究如何从东方财富网页爬取股东增持数据。

1.分析网页请求

打开网页,选择某数据右键查看元素,可以查看该数据在加载后的网页中的位置。

F12打开开发者工具,打开网页查看页面请求,可以发现网页发送了多个请求,请求到的文件包括html、css、js、png等,如下图所示。

网页主框架通过html请求加载,数据不在其中。数据是通过js单独加载的。

2.方案介绍

【方案一】

BeautifulSoup解析网页文件。

将网页保存在本地,python读取后用BeautifulSoup解析获得页面数据。

【方案二】

selenium、PhantomJS、BeautifulSoup组合,通过模拟浏览器打开对应网页后用BeautifulSoup进行解析。

from selenium import webdriver

driver = webdriver.PhantomJS()

jzc_html = "http://datainterface3.eastmoney.com/EM_DataCenter_V3/api/GDZC/GetGDZC?tkn=eastmoney&cfg=gdzc&secucode=&fx=1&sharehdname=&pageSize=50&pageNum=1&sortFields=BDJZ&sortDirec=1&startDate=2017-11-29&endDate=2017-11-30"

driver.get(jzc_html)

web_soup = BeautifulSoup(driver.page_source, "lxml")

print web_soup.prettify()

【方案三】

前两种方案对于获取当前页面数据还算比较有效,但对第二页数据的获取则束手无策。点击第二页发现网页只发送了一个请求数据的request,这就是数据接口啊。

http://data.eastmoney.com/DataCenter_V3/gdzjc.ashx?pagesize=50&page=2&js=var iTHPTzxw&param=&sortRule=-1&sortType=BDJZ&tabid=jzc&code=&name=&rt=50406968

用浏览器请求该网页,发现返回值中包含了请求的数据和真实的数据接口。

"url":"http://datainterface3.eastmoney.com/EM_DataCenter_V3/api/GDZC/GetGDZC?tkn=eastmoney&cfg=gdzc&secucode=&fx=1&sharehdname=&pageSize=50&pageNum=2&sortFields=BDJZ&sortDirec=1&startDate=&endDate="

用浏览器请求该接口,正是我们需要的数据,用|分割。pageSize=50表每页50条数据,pageNum=2表示当前请求的是第二页。其他字段容易理解。

既然找到了数据接口,那就可以用urllib来请求,将响应的数据解析为json格式。

import urllib2

jzc_html = "http://datainterface3.eastmoney.com/EM_DataCenter_V3/api/GDZC/GetGDZC?" \

"tkn=eastmoney&cfg=gdzc&secucode=&sharehdname=&pageSize=200&pageNum=1&sortFields=NOTICEDATE&sortDirec=1" \

"&fx=2"\

"&startDate="+start_data+"&endDate="+end_data

request = urllib2.Request(jzc_html)

response = urllib2.urlopen(request)

body = json.loads(response.read())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据逆透视是一种将数据从宽表格转换为长表格的操作,通常用于将数据进行清洗、整合和分析。Python中有多种方法可以实现数据逆透视,下面介绍其中两种常用的方法。 ## 方法一:使用pandas库的melt函数 pandas库是Python数据处理的重要工具,其中的melt函数可以实现数据逆透视。具体步骤如下: 1. 导入pandas库,并读入需要逆透视的数据。 ``` python import pandas as pd df = pd.read_excel('data.xlsx') ``` 2. 使用melt函数将宽表格转换为长表格。 ``` python df_melt = pd.melt(df, id_vars=['ID', 'Name'], var_name='Variable', value_name='Value') ``` 其中,id_vars参数指定需要保留的唯一标识列,var_name参数指定需要转换的列名,value_name参数指定转换后的数据列名。 3. 输出逆透视后的数据。 ``` python print(df_melt) ``` ## 方法二:使用pandas库的stack函数 除了melt函数外,pandas库的stack函数也可以实现数据逆透视。具体步骤如下: 1. 导入pandas库,并读入需要逆透视的数据。 ``` python import pandas as pd df = pd.read_excel('data.xlsx') ``` 2. 使用stack函数将宽表格转换为长表格。 ``` python df_stack = df.set_index(['ID', 'Name']).stack().reset_index().rename(columns={'level_2': 'Variable', 0: 'Value'}) ``` 其中,set_index函数将需要保留的唯一标识列设置为索引,stack函数将列索引转换为行索引,reset_index函数重置索引并将列索引转换为列名,rename函数重命名列名。 3. 输出逆透视后的数据。 ``` python print(df_stack) ``` 以上就是两种常用的Python实现数据逆透视的方法,可以根据具体情况选择适合的方法进行数据处理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值