Example #1
0
def get_forecast_items(security_item):
    forecast_path = get_forecast_event_path(security_item)
    if os.path.exists(forecast_path):
        with open(forecast_path) as data_file:
            forecast_json = json.load(data_file)
            for json_item in reversed(forecast_json):
                yield json_item
Example #2
0
def get_forecast_items(security_item):
    """
    get forecast items.

    Parameters
    ----------
    security_item : SecurityItem or str
        the security item,id or code

    Returns
    -------
    list of json

    """
    forecast_path = get_forecast_event_path(security_item)
    if os.path.exists(forecast_path):
        with open(forecast_path) as data_file:
            forecast_json = json.load(data_file)
            return reversed(forecast_json)
    def download_forecast_data(self, response):
        security_item = response.meta['item']
        trs = response.xpath('//*[@id="dataTable"]//tr').extract()

        forecast_jsons = []

        try:
            for tr in trs[1:]:
                tds = Selector(text=tr).xpath('//td//text()').extract()
                tds = [x.strip() for x in tds if x.strip()]

                # 业绩变动字符串转为float
                change_str = tds[7]
                change_start = None

                if '~' in change_str:
                    i = change_str.index('~')
                    change_start = change_str[0:i]
                    change = change_str[i + 1:]
                else:
                    change = change_str

                if change:
                    change = change.strip('%')
                    change = float(change) / 100
                if change_start:
                    change_start = change_start.strip('%')
                    change_start = float(change_start) / 100

                # preEPS可能为空
                preEPS = None
                try:
                    preEPS = float(tds[6])
                except Exception as e:
                    pass

                json_item = {"id": '{}_{}'.format(security_item['id'], tds[3]),
                             "securityId": security_item['id'],
                             "reportDate": tds[3],
                             "reportPeriod": tds[4],
                             "type": tds[2],
                             "description": tds[5],
                             "preEPS": preEPS,
                             "changeStart": change_start,
                             "change": change,
                             }
                forecast_jsons.append(json_item)

            if forecast_jsons:
                try:
                    with open(get_forecast_event_path(security_item), "w") as f:
                        json.dump(forecast_jsons, f, ensure_ascii=False)
                except Exception as e:
                    self.logger.error(
                        'error when saving forecast url={} path={} error={}'.format(response.url,
                                                                                    get_forecast_event_path(
                                                                                        security_item), e))



        except Exception as e:
            self.logger.error('error when getting k data url={} error={}'.format(response.url, e))
    def download_forecast_data(self, response):
        security_item = response.meta['item']
        trs = response.xpath('//*[@id="dataTable"]//tr').extract()

        forecast_jsons = []

        try:
            for tr in trs[1:]:
                tds = Selector(text=tr).xpath('//td//text()').extract()
                tds = [x.strip() for x in tds if x.strip()]

                # 业绩变动字符串转为float
                change_str = tds[7]
                change_start = None

                if '~' in change_str:
                    i = change_str.index('~')
                    change_start = change_str[0:i]
                    change = change_str[i + 1:]
                else:
                    change = change_str

                if change:
                    change = change.strip('%')
                    change = float(change) / 100
                if change_start:
                    change_start = change_start.strip('%')
                    change_start = float(change_start) / 100

                # preEPS可能为空
                preEPS = None
                try:
                    preEPS = float(tds[6])
                except Exception as e:
                    pass

                json_item = {
                    "id": '{}_{}'.format(security_item['id'], tds[3]),
                    "securityId": security_item['id'],
                    "reportDate": tds[3],
                    "reportPeriod": tds[4],
                    "type": tds[2],
                    "description": tds[5],
                    "preEPS": preEPS,
                    "changeStart": change_start,
                    "change": change,
                }
                forecast_jsons.append(json_item)

            if forecast_jsons:
                try:
                    with open(get_forecast_event_path(security_item),
                              "w") as f:
                        json.dump(forecast_jsons, f, ensure_ascii=False)
                except Exception as e:
                    self.logger.error(
                        'error when saving forecast url={} path={} error={}'.
                        format(response.url,
                               get_forecast_event_path(security_item), e))

        except Exception as e:
            self.logger.error(
                'error when getting k data url={} error={}'.format(
                    response.url, e))