使用python采集“股评家”推荐股票信息

更多精彩内容详见个人量化交易专辑索引

数据示例:

infoCodestockCodepublishDateemRatingCodeemRatingValueemRatingName
AP20170102023213810520552017/1/273买入
AP20170102023213899527182017/1/30
AP2017010202321391606001052017/1/20
AP2017010202321393213000142017/1/262增持
AP2017010302323097265382017/1/30
AP2017010302323097293005672017/1/30
AP2017010302323289036004152017/1/30
AP2017010302323347156004582017/1/373买入
AP2017010302323353443003832017/1/30

代码示例:

1. 在items.py中添加如下代码

import scrapy

class ReportItem(scrapy.Item):
    infoCode = scrapy.Field() 
    stockCode = scrapy.Field()
    publishDate = scrapy.Field()
    emRatingCode = scrapy.Field()
    emRatingValue = scrapy.Field()
    emRatingName = scrapy.Field()

2. 在spiders/report_eastmoney.py中添加如下代码

import scrapy
import re
import random
import time
import urllib
import json
import logging
from urllib.parse import urlencode
import datetime
from reptile.items import ReportItem

class ReportEastmoneySpider(scrapy.Spider):
    name = "report_eastmoney"
    allowed_domains = ["reportapi.eastmoney.com"]

    def make_url(self, pageNo, beginTime, endTime):
        params={'pageSize':50,
                'beginTime':beginTime,
                'endTime':endTime,
                'pageNo':pageNo,
                'qType':0,
        }
        encoded_params = urlencode(params)
        url = f'https://reportapi.eastmoney.com/report/list?{encoded_params}'
        return url

    def start_requests(self):
        # 获取最新数据的时间
        beginTime = '18000101'
        endTime = datetime.datetime.now().strftime('%Y%m%d')

        # 构建url参数
        url = self.make_url(1, beginTime, endTime)
        yield scrapy.Request(url, meta={"pageNo":1, "beginTime":beginTime, "endTime":endTime})

    def parse(self, response):
        html = response.text
        # 转换为json数据
        js_html = json.loads(html)
        js_data = js_html['data']
        if not js_data:
            return
        num = len(js_data)
        for i in range(num):
            item = ReportItem()
            item['infoCode'] = str(js_data[i]['infoCode'])
            item['stockCode'] = str(js_data[i]['stockCode'])
            item['publishDate'] = js_data[i]['publishDate']
            item['emRatingCode'] = str(js_data[i]['emRatingCode'])
            item['emRatingValue'] = js_data[i]['emRatingValue']
            item['emRatingName'] = str(js_data[i]['emRatingName'])
            yield item

        pageNo = response.meta['pageNo']
        beginTime = response.meta['beginTime']
        endTime = response.meta['endTime']
        if pageNo != 0:
            while pageNo < js_html['TotalPage']:
                url = self.make_url(pageNo+1, beginTime, endTime)
                yield scrapy.Request(url, meta={"pageNo":0, "beginTime":beginTime, "endTime":endTime})
                pageNo += 1
                
        pass

更多历史数据下载:

 量化交易-数据采集-股评家推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的小白兔奶糖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值