|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 wzdyjn 于 2021-11-14 18:51 编辑
import requests
def main():
url = 'https://bscscan.com/token/0xD44FD09d74cd13838F137B590497595d6b3FEeA4#balances'
headers = {'user-agent': 'firefox'}
r = requests.get(url, headers=headers)
print(r.text)
if __name__ == '__main__':
main()
我想获取 如图所示的数据 获取不到 求帮助 谢谢
本帖最后由 suchocolate 于 2021-11-14 19:27 编辑
从浏览器f12分析,真实的数据在另外的页面,这个页面的的url比较长,在页面的html代码里搜的了以下,这个url里只有sid和p是变动的,其他不变,p是页码,所以只要我们找到sid就能合成url。
我在首页的html代码里搜了sid是js定义的,用etree不方便获取,改用re获取。
合成数据页url后,开始根据需要获取想要的页数,每页的数据存在了tr里,循环所有tr获取其中的值。
- import requests
- import re
- from lxml import etree
- def main():
- url = 'https://bscscan.com/token/0xD44FD09d74cd13838F137B590497595d6b3FEeA4#balances' # 主页面
- headers = {'user-agent': 'firefox'}
- r = requests.get(url, headers=headers)
- sid = re.findall(r'var sid = \'(.*?)\'', r.text)[0] # 从主页面搜索sid,用于合成数据页的url
- result = []
- for i in range(1, 3): # 这里只爬取2页,想爬多一点的页,自己改range即可。
- url = f'https://bscscan.com/token/generic-tokenholders2?' \
- f'm=normal&a=0xD44FD09d74cd13838F137B590497595d6b3FEeA4&s=5000000000000000000000000&' \
- f'sid={sid}&p={i}' # 构建数据页url,i是第几页
- r = requests.get(url, headers=headers)
- html = etree.HTML(r.text)
- trs = html.xpath('//tbody/tr') # 使用xpath过滤出表格的每一行,逐行获取
- for tr in trs:
- rank = tr.xpath('./td[1]/text()')[0]
- ads = tr.xpath('./td[2]/span/a/text()')[0]
- qut = tr.xpath('./td[3]/text()')[0]
- result.append([rank, ads, qut]) # 存到列表中
- print(result) # 打印结果
- if __name__ == '__main__':
- main()
复制代码
|
|