【python爬虫】面向东方财富的数据爬取(二)初出茅庐

1.获取所有股票的代码

代码作为股票数据的唯一标识符号,作为重要传输参数.

在数据中心,发现资金流向会覆盖所有的股票代码,网址如下:
https://data.eastmoney.com/zjlx/detail.html
在这里插入图片描述
重复上篇文章的处理过程获取要传输的关键参数,这里我们将cb 这个参数去掉后,发现不影响数据结果,并且数据可以直接使用json 加载. feilds这个参数代表要请求的数据列有哪些,我们仅保留了f12: 代码code和 f14:名称name
在这里插入图片描述
在这里插入图片描述

import requests
import pandas as pd
import json
#url = 'https://datacenter.eastmoney.com/stock/selection/api/data/get/
    
headers ={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}

url ='https://push2.eastmoney.com/api/qt/clist/get/'

#secid 股票id
param ={
    
    'fid': 'f62',
    'po': '1',
    'pz': '5000',
    'pn': '1',
    'np': '1',
    'fltt': '2',
    'invt': '2',
   
    'fs': 'm:0+t:6+f:!2,m:0+t:13+f:!2,m:0+t:80+f:!2,m:1+t:2+f:!2,m:1+t:23+f:!2,m:0+t:7+f:!2,m:1+t:3+f:!2',
    'fields': 'f12,f14',
}

resp = requests.get(url = url,params = param ,headers = headers)
res =resp.text
print(res)
print(type(res))
rrr =json.loads(res)

t1= rrr['data']['diff']
df = pd.DataFrame(t1)

print(df)

2.获取所有板块的代码 (技术代码同上)

在这里插入图片描述

import requests
import pandas as pd
    
headers ={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}

url ='https://push2.eastmoney.com/api/qt/clist/get'


param ={
      
    'po': '1',
    'pz': '500',
    'pn': '1',
    'np': '1',   
   'fields':'f12,f14',
    'fid': 'f62',
    'fs':'m:90+t:2',
    
}

resp = requests.get(url = url,params = param ,headers = headers)
res =resp.text
print(res)
print(type(res))
print(resjson[0])
rrr =json.loads(res)

t1= rrr['data']['diff']
df = pd.DataFrame(t1)
print(df)

3.从其他财经网 获得中证500 成分股

上篇我们获取了具有代表性的沪深300,另一个具有代表性的是中证500,两个模块的成分股没有重复…奈何在分析过程中,东方财富网没有找到中证500成分股.找到下面网站,发现中证500成分股,数据列还挺多.
在这里插入图片描述

GET请求获取到的不是结构化的数据,而是直接得到一个asp网页,这里传参部分,我们直接跳过,重点分析获取关键数据.
在这里插入图片描述

import requests
import pandas as pd
#url = 'https://datacenter.eastmoney.com/stock/selection/api/data/get/
    
headers ={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
url ='http://www.shdjt.com/flsort.asp?lb=399905'
resp = requests.get(url = url,headers = headers)
res =resp.text
print(res)

不使用beautifulsoup lxml 等解析库的话,根据万能的正则表达式可以获取到网页中的任意数据.
分析网页内容后发现 表格没行都会有一个 HTML标签,

  • .*? 表示惰性匹配
  • \d{6} 表示6位数字
  • 参数re.S 可以忽略网页中的换行符等
  • (?P\d{6}) 表示对获取到的内容进行命名,命名为code
    在这里插入图片描述
import re
# ppp = re.compile(r'<tr  height="25">.*?gpdm=(?P<code>\d{6}) ',re.S) (?P<name>)</a>
ppp = re.compile(r'<tr  height="25">.*?gpdm=(?P<code>\d{6})">(?P<name>.*?)</a>',re.S)

result = ppp.finditer(res)

print(result)
print(type(result))
code=[]
name=[]
for i in result:
    code.append(i.group("code"))
    name.append(i.group("name"))
df = pd.DataFrame()
df['code'] =code
df['name'] =name
print(df)
df.to_csv('中证500.csv',encoding='gbk')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值