Selenium爬取智能合约交易记录
1.目的:爬取 https://eth.btc.com/accounts 上的智能合约账户地址及其交易记录数据。
2.方法:
- 加入元素显式等待
- 利用selenium爬取记录并判断是否为合约地址or外部地址(有合约地址图标的即合约地址)
- 对爬取的数据做简单的第一步的数据处理使数据格式标准化
- 将数据追加写入txt中
3.源代码(Python)
项目目录结构
- codeA中爬取的数据会保存在A.txt中
- codeB中爬取的数据会保存在B.txt中
# @Content : 账户地址页面 A 爬取
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECS
from selenium.webdriver.common.by import By
import time
url = 'https://eth.btc.com/accounts'
opt = webdriver.ChromeOptions() # 创建浏览
driver = webdriver.Chrome(options=opt) # 创建浏览器对象
driver.get(url) # 打开网页
pageSum = 2 # 爬取多少页
all_list = [] # A数据总表
for q in range(1, pageSum + 1):
print('开始爬取第' + str(q) + '页...')
try:
# 定位页面中的table表格元素
table_loc = (By.CSS_SELECTOR,
'#root > div > section > section > main > div > div > div.page-container > '
'div:nth-child(2) > div > div > div > div > div > div > table')
# 等待timeOut秒,直到发现元素
timeOut = 20
WebDriverWait(driver, timeOut).until(ECS.presence_of_element_located(table_loc))
except:
# timeOut秒后没有发现元素则会执行该方法
print('执行except方法 : 没有找到对应元素! 当前已爬取到第', q, '页')
driver.quit()
finally:
# 发现元素则执行下面的方法
# 定位页面中的table表格元素
el