【发布时间】:2021-11-25 09:36:04
【问题描述】:
我正在尝试抓取网站以查找某个令牌的持有者地址。当我选择地址并检查页面时,我被带到元素部分。它是 html 格式的,所以我认为这是我可以从中抓取它的地方。
我试过这段代码
from bs4 import BeautifulSoup
import requests
# opening and grabbing html
holders_text = requests.get("https://etherscan.io/token/generic-tokenholders2?a=0x57a204aa1042f6e66dd7730813f4024114d74f37&sid=&m=normal&s=3863&p=1").text
holders_html = BeautifulSoup(holders_text, 'lxml')
print(holders_html)
但我很快发现这个 html 和我要找的完全不同。
我想弄清楚是否有办法将页面元素提取到python中,特别是每个地址,如下所示:
Picture of what I am trying to scrape
如果有任何方法可以抓取这些数据,请告诉我,谢谢!
【问题讨论】:
-
driver.page_source不会返回页面的未经评估的原始 HTML 源代码吗?您所追求的数据是使用 JavaScript 动态生成的吗?如果是这样,它将永远不会出现在driver.page_source中。您正在寻找的"stuff"到底是什么?为什么不使用特定的选择器组合来检索您需要的数据?您在此处选择的方法本身确实不是最佳实践。 "基本上我想知道如何确保从 url 获取所有源代码。" 页面的所有源代码都应该在driver.page_source;不是吗? -
Driver.page_source 似乎返回了我看到的源代码的截断版本。 “东西”只是一个多次出现的长类定义。我猜它必须是动态生成的,有没有办法查看这个?
-
您能否分享一个展示此行为的可公开访问网站的示例(
driver.page_source返回截断的源代码? -
您的问题仍然严重缺乏具体回答此问题所需的细节。 ““stuff”只是一个多次出现的长类定义。” JavaScript 类定义? CSS类定义?你可以说得更详细点吗?你想用它做什么?在当前页面中定义类时只需打印一条消息? “我猜肯定是动态生成的,有什么办法可以查看吗?” “it”是什么?类定义?它似乎是在什么条件下动态生成的?用您自己的话来说,“查看 [it]”是什么?
-
是的,当然,我正在查看的页面是 Etherscan,例如:etherscan.io/token/…
标签: python html web-scraping