【问题标题】:Python scrape crytocomparePython刮加密比较
【发布时间】:2018-07-26 13:24:44
【问题描述】:

我正在尝试使用 python 来抓取“每月利润”的 crytocompare 输出。该网站使用 javascript 来获取输出。

目前我有:

from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get("https://www.cryptocompare.com/mining/calculator/xmr?HashingPower=65&HashingUnit=H%2Fs&PowerConsumption=0&CostPerkWh=0.12&MiningPoolFee=.5")
p_element = driver.find_element_by_id(id_='ng-binding')
print(p_element.text)

错误:

Warning (from warnings module):
  File "C:\Python27\lib\site-packages\selenium\webdriver\phantomjs\webdriver.py", line 49
    warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead

我遇到的问题是,我将使用 Python 3.6 AWS Lambda 函数

https://www.fullstackpython.com/blog/aws-lambda-python-3-6.html。我不相信我可以安装无头版本的 Chrome/Firefox?

为了得到我想要的输出,上述方法是否矫枉过正?请帮忙

【问题讨论】:

  • 如果您打算在 Lambda 内部部署,最好使用 requestsBeautifulSoup
  • 仅供参考,我不相信cryptocompare.com/api 会有所帮助。
  • 使用javascript?
  • 啊,好点,如果它是生成的内容,那将不起作用。您可以尝试在装有 chrome 的 ECS 中运行容器。

标签: python web-scraping cryptography bitcoin


【解决方案1】:

是的,您正在尝试的完全是矫枉过正。 对 API 的简单查询将为您提供所有需要的信息:

https://min-api.cryptocompare.com/data/coin/generalinfo?fsyms=%20BTC,ETH,ETC,XMR,ZEC,AION,PASC,DASH,LTC,DCR&tsym=USD

(可以在浏览器中测试)

计算每种货币所需的数据是:NetHashesPerSecond, BlockTime, BlockReward

您可以在这个 javascript 文件中找到页面执行的所有计算:

https://www.cryptocompare.com/scripts/services/mining.js(chrome 显示它的格式很好)

检查函数$scope.generateValues

将这些计算转换为 python 应该很容易。

希望对你有帮助!

PS:我如何找到相关的js文件?如果您使用浏览器调试页面,您会在此文件中找到所有代码https://www.cryptocompare.com/DependencyHandler.axd?s=L3NjcmlwdHMvVmVuZG9yL2pxdWVyeS0xLjExLjMubWluLmpzOy9zY3JpcHRzL1ZlbmRvci9hbmd1bGFyLjEuNS41Lm1pbi5qczsvc2NyaXB0cy9WZW5kb3IvZXh0cmEtYW5ndWxhci1tb2R1bGVzLmpzOy9zY3JpcHRzL2luaXRhbmd1bGFyYXBwLmpzOy9zY3JpcHRzL1ZlbmRvci9zb2NrZXQuaW8tMi4wLjMuanM7L3NjcmlwdHMvVmVuZG9yL2hvdmVyLWRyb3Bkb3duLmpzOy9zY3JpcHRzL3N0cmVhbWluZy11dGlsaXRpZXMuanM7L3NjcmlwdHMvc2VydmljZXMvZ2xvYmFsLmpzOy9zY3JpcHRzL2NvbnRyb2xsZXJzL2dsb2JhbC5qczsvc2NyaXB0cy9kaXJlY3RpdmVzL2dsb2JhbC5qczsvc2NyaXB0cy9nbG9iYWwuanM7L3NjcmlwdHMvcm91dGVzL21pbmluZy1jYWxjdWxhdG9yLXBhZ2UuanM7L3NjcmlwdHMvc2VydmljZXMvbWluaW5nLmpzOy9zY3JpcHRzL2NvbnRyb2xsZXJzL21pbmluZy5qczsvc2NyaXB0cy9kaXJlY3RpdmVzL21pbmluZy5qczs&t=Javascript

我不是专家,但这看起来像 Angular 下载 javascript 依赖项的方式,如果你对那个参数进行 base64 解码,你会看到:

/scripts/Vendor/jquery-1.11.3.min.js;/scripts/Vendor/angular.1.5.5.min.js;/scripts/Vendor/extra-angular-modules.js;/scripts/initangularapp.js;/scripts/Vendor/socket.io-2.0.3.js;/scripts/Vendor/hover-dropdown.js;/scripts/streaming-utilities.js;/scripts/services/global.js;/scripts/controllers/global.js;/scripts/directives/global.js;/scripts/global.js;/scripts/routes/mining-calculator-page.js;/scripts/services/mining.js;/scripts/controllers/mining.js;/scripts/directives/mining.js;

所有这些文件都可以下载。

干杯。

【讨论】:

猜你喜欢
  • 2018-04-03
  • 2017-10-31
  • 2021-04-10
  • 1970-01-01
  • 2012-11-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-13
相关资源
最近更新 更多