鱼C论坛

 找回密码
 立即注册
查看: 2341|回复: 3

[已解决]爬虫问题

[复制链接]
发表于 2021-11-14 18:04:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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()


微信图片_20211114183434.png

我想获取 如图所示的数据 获取不到    求帮助 谢谢

最佳答案
2021-11-14 19:17:43
本帖最后由 suchocolate 于 2021-11-14 19:27 编辑
wzdyjn 发表于 2021-11-14 18:37
我想获取的是这个数据  获取不到



屏幕截图 2021-11-14 192104.jpg
从浏览器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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-14 18:20:48 | 显示全部楼层
本帖最后由 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-14 18:37:37 | 显示全部楼层
suchocolate 发表于 2021-11-14 18:20
你的代码发全,我用下面的代码能取到内容:


微信图片_20211114183434.png

我想获取的是这个数据  获取不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-14 19:17:43 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suchocolate 于 2021-11-14 19:27 编辑
wzdyjn 发表于 2021-11-14 18:37
我想获取的是这个数据  获取不到



屏幕截图 2021-11-14 192104.jpg
从浏览器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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 20:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表