使用“请求-HTML”库获取交易价格时遇到麻烦

使用“请求-HTML”库获取交易价格时遇到麻烦,第1张

概述我在 python中编写了一个脚本,以便从 javascript呈现的网页中获取最后一笔交易的价格.如果我选择使用硒,我可以获得内容.我的目标是不使用任何浏览器模拟器,如selenium或其他东西,因为最新版本的 Requests-HTML应该能够解析javascript加密内容.但是,我无法顺利完成任务.当我运行脚本时,我收到以下错误.任何有关这方面的帮助将受到高度赞赏. 地址:webpage_ 我在 python中编写了一个脚本,以便从 javascript呈现的网页中获取最后一笔交易的价格.如果我选择使用硒,我可以获得内容.我的目标是不使用任何浏览器模拟器,如selenium或其他东西,因为最新版本的 Requests-HTML应该能够解析JavaScript加密内容.但是,我无法顺利完成任务.当我运行脚本时,我收到以下错误.任何有关这方面的帮助将受到高度赞赏.

地址:webpage_link

我尝试过的脚本:

import requests_HTMLwith requests_HTML.HTMLSession() as session:    r = session.get('https://www.gdax.com/Trade/LTC-EUR')    Js = r.HTML.render()    item = Js.find('.MarketInfo_market-num_1lAXs',first=True).text    print(item)

这是完整的追溯:

Exception in callback NavigatorWatcher.waitForNavigation.<locals>.watchdog_cb(<Task finishe...> result=None>) at C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\site-packages\pyppeteer\navigator_watcher.py:49handle: <Handle NavigatorWatcher.waitForNavigation.<locals>.watchdog_cb(<Task finishe...> result=None>) at C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\site-packages\pyppeteer\navigator_watcher.py:49>Traceback (most recent call last):  file "C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\asyncio\events.py",line 145,in _run    self._callback(*self._args)  file "C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\site-packages\pyppeteer\navigator_watcher.py",line 52,in watchdog_cb    self._timeout)  file "C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\site-packages\pyppeteer\navigator_watcher.py",line 40,in _raise_error    raise errorconcurrent.futures._base.TimeoutError: Navigation Timeout Exceeded: 3000 ms exceededTraceback (most recent call last):  file "C:\Users\ar\AppData\Local\Programs\Python\python36-32\experiment.py",line 6,in <module>    item = Js.find('.MarketInfo_market-num_1lAXs',first=True).textAttributeError: 'nonetype' object has no attribute 'find'Error in atexit._run_exitfuncs:Traceback (most recent call last):  file "C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\shutil.py",line 387,in _rmtree_unsafe    os.unlink(fullname)PermissionError: [WinError 5] Access is denIEd: 'C:\Users\ar\.pyppeteer\.dev_profile\tmp1gng46sw\CrashpadMetrics-active.pma'

我所能找到的价格在页面顶部可以看到这样的177.59 EUR最后交易价格.我希望得到177.59或当前的价格.

解决方法 你有几个错误.第一个是“导航”超时,显示页面未完成渲染:
Exception in callback NavigatorWatcher.waitForNavigation.<locals>.watchdog_cb(<Task finishe...> result=None>) at C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\site-packages\pyppeteer\navigator_watcher.py:49handle: <Handle NavigatorWatcher.waitForNavigation.<locals>.watchdog_cb(<Task finishe...> result=None>) at C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\site-packages\pyppeteer\navigator_watcher.py:49>Traceback (most recent call last):  file "C:\Users\ar\AppData\Local\Programs\Python\python36-32\lib\asyncio\events.py",in _raise_error    raise errorconcurrent.futures._base.TimeoutError: Navigation Timeout Exceeded: 3000 ms exceeded

主线程中不会引发此回溯,因此您的代码未中止.您的页面可能已完成,也可能未完成;您可能希望为浏览器设置更长的超时或引入睡眠周期,以便有时间处理AJAX响应.

接下来,response.HTML.render()元素返回None.它将HTML加载到无头Chromium浏览器中,将JavaScript呈现留给该浏览器,然后将页面HTML复制回到适当的response.HTML数据结构中,并且不需要返回任何内容.所以Js设置为None,而不是新的HTML实例,导致你的下一个回溯.

渲染后,使用现有的response.HTML对象进行搜索:

r.HTML.render()item = r.HTML.find('.MarketInfo_market-num_1lAXs',first=True)

很可能没有这样的CSS类,因为在通过AJAX加载JsON数据之后,在每个页面渲染上生成最后5个字符.这使得很难使用CSS来查找有问题的元素.

此外,我发现没有睡眠周期,浏览器就没有时间获取AJAX资源并呈现您想要加载的信息.在复制HTML之前,给它做10秒的睡眠以完成一些工作.如果看到网络超时,请设置更长的超时(默认为8秒):

r.HTML.render(timeout=10,sleep=10)

您也可以将超时设置为0,以删除超时并无限期地等待页面加载.

希望a future API update还提供wait for network activity to cease的功能.

您可以使用included parse library查找匹配的CSS类:

# search for CSS suffixessuffixes = [r[0] for r in r.HTML.search_all('MarketInfo_market-num_{:w}')]for suffix in suffixes:    # for each suffix,find all matching elements with that class    items = r.HTML.find('.MarketInfo_market-num_{}'.format(suffix))    for item in items:        print(item.text)

现在我们得到输出:

169.81 EUR+1.01 %18,420 LTC169.81 EUR+1.01 %18,420 LTC

您的上一次回溯显示无法清除Chromium用户数据路径.底层Pyppeteer library使用临时用户数据路径配置无头Chromium浏览器,在您的情况下,该目录包含一些仍然锁定的资源.您可以忽略该错误,但您可能希望稍后尝试删除.pyppeteer文件夹中的所有剩余文件.

总结

以上是内存溢出为你收集整理的使用“请求-HTML”库获取交易价格时遇到麻烦全部内容,希望文章能够帮你解决使用“请求-HTML”库获取交易价格时遇到麻烦所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140616.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存