bsc

249 阅读1分钟
def __init__(self):
        self.proxiex = {
            "http": get_proxy(),
            "https": get_proxy()
        }
        self.offset = 200
        self.host = 'https://api.bscscan.com/api?module='
        self.ethbalance_url = "{}account&action=balance&address={}&tag=latest&apikey={}"
        self.tokenbalance_url = "{}account&action=tokenbalance&contractaddress={}&address={}&tag=latest&apikey={}"
        self.tx_list_url = "{}account&action=txlist&address={}&page=1&offset={}&sort=desc&apikey={}"
        self.token_tx_list_url = "{}account&action=tokentx&address={}&page=1&offset={}&sort=desc&apikey={}"
        self.tok_tx_url = "{}account&action=tokentx&contractaddress={}&address={}&page=1&offset={}&sort=desc&apikey={}"
        self.contract_total_amount_url = "{}stats&action=tokensupply&contractaddress={}&apikey={}"

# 获取 指定币种合约地址 的钱包的交易记录
    def get_contract_token_tx(self, address, contract_addr, key=key_list[random.randint(0, 2)], offset=20):
        url = self.tok_tx_url.format(self.host, contract_addr, address, offset if offset else self.offset, key)
        n = 0
        while True:
            n += 1
            try:
                # print("阿布云 开始请求 第 {}次 :{}".format(n, url))
                r = get_json_request(url=url, proxies=self.proxiex)
                if r.status_code == 200:
                    return r.json()['result']
                else:
                    raise NoDataError('阿布云请求 失败 无erc20指定 交易记录,通过 crawlera请求 {}'.format(r.status_code))
            except Exception as e:
                log.info('erc20 指定交易记录:{}'.format(e))
                # traceback.print_exc()
                try:
                    # print('crawlera 开始请求 第 {}:{}'.format(n, url))
                    r_is = remote_requests_by_crawler(url)
                    if r_is.status_code == 200:
                        return r_is.json()['result']
                    else:
                        raise NoDataError('crawlera求失败 无erc20指定 交易记录,进入下一次尝试 {}'.format(r_is.status_code))
                except Exception as e_is:
                    log.info('erc20 指定交易记录:{}'.format(e_is))
                    # traceback.print_exc()
            time.sleep(2)
            if n == 3:
                break