Python 爬虫 | 获取股票基本面数据

今天给大家分享一个关于基本面的公式,提前申明一下这个公式不是我想出来的,不做投资依据。这个公式出自《股市稳赚》作者是(美)乔尔·格林布拉特,我在百度上粘贴一段他的介绍下来:“乔尔·格林布拉特是Gotham资本公司的创始人和合伙经理人,自1985年这一私人投资公司成立以来,它的年均回报率达到了40%。他不仅是哥伦比亚大学商学院的客座教授,一家《财富》500强公司的前董事长,价值投资者俱乐部网站的合作发起人,还是《你能成为股市天才》一书的作者。格林布拉特拥有理学学士学位,并从沃顿学院获得工商管理硕士学位。”

公式的内容是:分别对PE、ROE进行排序,PE越低排名越高、ROE越高排名越高,最后把PE、ROE的排名加起来,挑出排名前30位的股票进行投资,当然还有一些细节的操作,大家感兴趣的话可以看看这本书。

c12b85918177750db44fe7a68ef1ad5d.jpeg

这次我们需要获取的数据就是个股PE、ROE。


目标网站:

aHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2dyaWRsaXN0Lmh0bWwjaHNfYV9ib2FyZA==


目录:

1、环境

2、分析网站

3、实现爬取



1、环境

Python3.7、requests


2、分析网站

ed15a9b9f4098533f7c06edf8ead19b0.jpeg
图2-1

随便输入一个股票代码如:000001,选取第一个结果,

0b8c22ce5002088914f0578acf1cb475.jpeg
图2-2

我们就是要这两个数据,打开开发者工具Ctrl+F直接查找,我是根据公司市值进行查询的如图2-3

c13cc8fbdf9172358ef7bb42322a7518.jpeg
图2-3

找到数据接口就简单了,请求拿数据就好了,我们只要f12、f14、f23、f37


3、代码实现

注意了这里返回的不符合json格式,因此需要自己转换,可以用正则直接提取数据,这是我之前一直用的方法,但是最近我发现了一个好方法可以轻松解决

a = '[1, 2, 3]'
print(type(a))
print(type(eval(a)))
运行结果
<class 'str'>
<class 'list'>

eval()可以将符合列表、字典等格式的字符串直接转为对应的类型

将返回的字符数据切片出目标的字符串再进行转换就好了

def jquery_list(jquery, data_mode='[') -> dict:
    reverse_mode = {'[': ']', '{': '}', '(': ')'}
    tail_str = jquery[-5:][::-1]
    return eval(jquery[jquery.index(data_mode): -tail_str.index(reverse_mode[data_mode])])

请求得到数据

def get_page(url, json=False):
    """
    获取源码
    """
    if json:
        return requests.get(url=url, headers=headers).json()
    return requests.get(url=url, headers=headers).text


def jquery_list(jquery, data_mode='[') -> dict:
    reverse_mode = {'[': ']', '{': '}', '(': ')'}
    tail_str = jquery[-5:][::-1]
    return eval(jquery[jquery.index(data_mode): -tail_str.index(reverse_mode[data_mode])])


def main(end):
    date = time.strftime('%Y-%m-%d', time.localtime())
    for page in range(1, end):
        url = 'http://65.push2.eastmoney.com/api/qt/clist/get?cb=jQuery1124020466762984478337' \
              f'_1609556336027&pn={page}&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&' \
              'fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&' \
              'fields=f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,' \
              f'f24,f25,f22,f11,f62,f128,f136,f115,f152,f37,f100,f102&_={int(time.time() * 1000)}'
        content = get_page(url=url)
        result = jquery_list(content, data_mode='{')
        for i in result['data']['diff']:
            f12, f14, f9, f37 = i['f12'], i['f14'], i['f9'], i['f37']
            data = {"date": date, "stock_code": f12, "name": f14, 'PE': f9, 'ROE': f37}
            print(data)

运行结果:

8cfcf65b6b4d9117c7c0ae9a6f234e7f.png

main函数的参数end是首页的最大页数

3068fcce182011db369837e8ab5c4b1d.png

这个基本面公式不是一直有效的,每几年就可能会失效一次,如果你想使用这个公式的话建议先把原著看一遍。

投资有风险,入市需谨慎

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python是一种功能强大的编程语言,可以用于多种用途,其中之一是web爬虫。tushare是一个专业的股票数据接口,可以提供各种市场数据,如股票、指数、基金、期货等等。 使用Python和tushare进行股票数据爬取非常简便。首先需要在Python中安装tushare库,然后import该库到Python环境中。 通过tushare库,可以调用它提供的不同方法,如get_h_data()获取历史股票数据,get_today_ticks()获取今天的交易明细信息,get_tick_data()获取分笔数据等等。 例如,如果要获取股票的历史数据,可以使用如下代码: ```python import tushare as ts import pandas as pd # 设置股票代码和时间范围 code = '601318' start_date = '20210101' end_date = '20210630' # 调用tushare函数 df = ts.get_hist_data(code, start=start_date, end=end_date) # 查看数据 print(df.head()) ``` 这里获取的是中国平安(股票代码为601318)2021年1月1日至2021年6月30日的历史数据获取数据是一个pandas dataframe对象,可以使用各种数据处理和分析工具来操作和分析这些数据。例如,可以计算某个时间段内某个股票的均价、最大值、最小值等等,或者画出趋势图以及其他图表等等。 综上所述,通过tushare可以非常方便地获取股票数据,使用Python数据处理和分析工具,处理和分析这些数据,是进行量化投资和金融数据分析的重要工具。 ### 回答2: Python是一种广泛使用的编程语言,可用于各种项目和应用。其中,爬虫Python的一项重要应用技能之一,它可以帮助我们收集和分析网络上的信息。Tushare是一种Python股票数据API,可以帮助我们从股票市场上获取数据。 借助Python和Tushare,我们可以编写一个简单的股票爬虫程序,获取股票市场上各种类型的数据。例如,我们可以获取股票实时信息、历史价格、股票基本面数据等等。具体来说,我们可以用Tushare获取股票历史价格数据,然后用Python进行分析和可视化,帮助我们更好地了解股票市场的趋势和变化。 使用Python和Tushare进行股票数据爬取有很多优势。首先,Python是一种易于学习和使用的编程语言,具有很高的编程效率和灵活性。其次,Tushare是一个非常丰富和完整的股票数据API,可以帮助我们快速获取各种类型的数据。此外,Python和Tushare的开源性和免费地使用,使得股票数据爬取成本极低。 总之,Python和Tushare结合可以提供一个灵活、高效、低成本的解决方案,帮助爬虫程序员获取股票市场上各种类型的数据。这些数据可以是有助于投资决策的行业趋势和股票基本面数据,也可以是有助于交易行为的实时价格和历史价格数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值