如何解决为什么出现错误“无法在现有事件循环中使用HTMLSession请改用AsyncHTMLSession”?
我正在运行@ Dan-Dev在他的answer中提供的代码。
from requests_html import HTMLSession
url = 'https://www.thefreedictionary.com/love'
session = HTMLSession()
r = session.get(url)
r.html.render()
lang_bar = r.html.find('#LangBar',first=True)
print(lang_bar.html)
结果是
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-2-ec1d9137b197> in <module>
8
9 resp = session.get(url,headers = headers)
---> 10 resp.html.render()
11
12 soup = bs(resp.html.html,"lxml")
C:\Anaconda3\lib\site-packages\requests_html.py in render(self,retries,script,wait,scrolldown,sleep,reload,timeout,keep_page)
584 """
585
--> 586 self.browser = self.session.browser # Automatically create a event loop and browser
587 content = None
588
C:\Anaconda3\lib\site-packages\requests_html.py in browser(self)
727 self.loop = asyncio.get_event_loop()
728 if self.loop.is_running():
--> 729 raise RuntimeError("Cannot use HTMLSession within an existing event loop. Use AsyncHTMLSession instead.")
730 self._browser = self.loop.run_until_complete(super().browser)
731 return self._browser
RuntimeError: Cannot use HTMLSession within an existing event loop. Use AsyncHTMLSession instead.
很显然,该代码在Dan-Dev的计算机上运行良好。您能否解释为什么我的笔记本电脑返回错误Cannot use HTMLSession within an existing event loop. Use AsyncHTMLSession instead
?
解决方法
您可以尝试以下方法:
import nest_asyncio
nest_asyncio.apply()
session = HTMLSession()
r = session.get(url_template.format(url))
html_str = r.text
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。