python 爬虫 东方财富网股票信息爬取

大体思路:先爬所有的股票代码,再通过股票代码获取详细数据

首先进行页面分析,打开http://quote.eastmoney.com/center/gridlist.html#sh_a_board

python 爬虫 东方财富网股票信息爬取_第1张图片

按F12找数据来源接口,

python 爬虫 东方财富网股票信息爬取_第2张图片

发现参数pn为页数,则构建request请求,遍历每一页,f12为股票代码,对返回的数据进行处理

    sh_list = request.urlopen(request.Request(
        url=url, headers=header_dict)).read().decode(encoding='utf-8')
    '''字符串处理获取股票代码'''
    reg=re.compile(r'(?<=f12":")\d{6}')
    all_items = re.findall(reg,sh_list)
    return all_items
sz_alllist=[]
for x in range(1,113):
    sz_alllist+=get_sz(str(x))

得到上证A股的股票代码文件

python 爬虫 东方财富网股票信息爬取_第3张图片

深证同理,不过深证的股票代码有的是0开头的,存进去后需要改一下单元格格式填充前面缺失的0

接下来随便打开一个股票详情页面,http://quote.eastmoney.com/sh600778.html

python 爬虫 东方财富网股票信息爬取_第4张图片

F12抓包发现似乎是之前遇到过的数据绑定,则如果通过request来爬取的话,看不到数据,测试了一下发现数据的位置变成了横杠-,所以还是继续找接口来直接爬接口,

找到接口以后发现页面会一直刷新,服务器会不断的推送新的数据,有时候久的时候要等几分钟才能全部接受完返回,一开始不断怎么解决,后面尝试把接口原本的sse改成get,就解决问题了。而且参数fields就是请求的数据,可以根据自己的需求来请求数据,我这里就需要

大概这些吧 然后还是老套路,访问接口接受数据存储

    with request.urlopen(req2) as f:
        data_str=f.read().decode('utf-8').split('"data":')[1][:-1] #对返回的数据进行切割切片处理
        data_dict=json.loads(data_str) #将字符串转为字典对象

这里因为返回的数据是字符串,而且刚好是字典类型的,利用json库的loads方法转换为字典,再自己新建一个字典定义数据的键

大体就这样代码在附件里,有什么问题可以留言评论,代码仅供学习使用,切勿用于其他用途,后果自己承担

你可能感兴趣的:(Python小项目)