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:
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))
try:
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))
time.sleep(2)
if n == 3:
break