股票指数信息采集

中证指数有限公司数据采集

直接上代码

__author__ = 'Luzaofa'
__date__ = '2019/4/25 21:18'

import re
import time
import requests
import logging
import configparser
import pandas as pd
from requests.exceptions import RequestException


class Config(object):
    '''解析配置文件'''

    def get_config(self, lable, value):
        cf = configparser.ConfigParser()
        cf.read("CONFIG.conf")
        config_value = cf.get(lable, value)
        return config_value


class Spider(Config):

    def __init__(self):
        self.url = 'http://www.csindex.com.cn/zh-CN/indices/index?page={page}&page_size=5000&by=asc&order=%E5%8F%91%E5%B8%83%E6%97%B6%E9%97%B4&data_type=json&class_2=2'
        self.type = '_0.CNSHS'

    def log(self, fileName, mass):
        '''日志'''
        logging.basicConfig(filename=fileName, format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO)
        logging.info(mass)

    def get_response(self, url):
        '''
            给出url,获取网页响应
        '''
        try:
            response = requests.get(url)
            response.encoding = 'unicode-escape'
            return response.text
        except RequestException:
            return None

    def get_list_value(self, response):
        '''
            利用正则匹配,发送请求,获取整页源代码
        '''
        pattern = re.compile(r'index_code":"(.*?)",.*?indx_sname.*?".*?"(.*?)",.*?\}', re.S)
        item = pattern.findall(response)
        return item

    def logic(self, args):
        '''
        业务逻辑(单个任务逻辑模块)
        '''
        all_index = []
        for page in range(1, 7):
            url = self.url.format(page=page)
            response = self.get_response(url)
            values = self.get_list_value(response)
            for value in values:
                # all_index.append([value[1], value[0]])    # 简称,代码
                all_index.append(['%s%s' % ((value[0]), self.type)])  # 代码_0.CNSHS
            print('正在采集第:%s页,一共:%s条数据' % (page, len(values)))
        print(all_index)
        print(len(all_index))
        df = pd.DataFrame(all_index)
        df.to_csv('sh.csv', index=False, header=None)

    def main(self):
        '''
        主入口
        :return:
        '''
        start = time.time()
        pros = [1]  # 任务池
        self.logic(pros)  # 普通处理
        end = time.time()
        print('业务处理总耗时:%s 秒!' % (end - start))


if __name__ == '__main__':
    print('Start!')
    demo = Spider()
    demo.main()  # 普通
    print('END')

效果图如下:

采集详情
在这里插入图片描述
在这里插入图片描述

最近很忙,代码就不做解释了,晚上朋友们!
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值