爬虫问题
本帖最后由 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 18:31 编辑
你的代码发全,我用下面的代码能取到内容:
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 18:20
你的代码发全,我用下面的代码能取到内容:
我想获取的是这个数据获取不到 本帖最后由 suchocolate 于 2021-11-14 19:27 编辑
wzdyjn 发表于 2021-11-14 18:37
我想获取的是这个数据获取不到
从浏览器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)# 从主页面搜索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/text()')
ads = tr.xpath('./td/span/a/text()')
qut = tr.xpath('./td/text()')
result.append()# 存到列表中
print(result)# 打印结果
if __name__ == '__main__':
main()
页:
[1]