'Why is the error "Cannot use HTMLSession within an existing event loop. Use AsyncHTMLSession instead"?
I'm running the code provided by @Dan-Dev in his 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)
and the result is
---------------------------------------------------------------------------
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.
Clearly, the code runs fine in Dan-Dev's computer. Could you please explain why my laptop returns an error Cannot use HTMLSession within an existing event loop. Use AsyncHTMLSession instead
?
Solution 1:[1]
You may try this:
import nest_asyncio
nest_asyncio.apply()
session = HTMLSession()
r = session.get("URL")
html_str = r.text
Solution 2:[2]
You can save these codes in a source file, such as 'src.py'. Then open an Anaconda Prompt (assuming you are using this) and run this command (assure you are in the folder containing the 'src.py' file)
python src.py
This solution has worked for me. You should not run the source file in Spyder IDE or Jupyter Notebook.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Ian |