I am trying to web scrape with python in PyCharm using requests_html. The following code doesn't return an error in the terminal using the same venv as my PyCharm project (python 3.8.10), but when I use PyCharm I get an error.
The code:
from requests_html import HTMLSession
session = HTMLSession
response = session.get('https://python.org')
After running response = session.get('https://python.org')
in PyCharm I get this error:
Traceback (most recent call last):
File "/usr/lib/python3.8/code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 11, in <module>
TypeError: get() missing 1 required positional argument: 'url'
How can I make PyCharm successfully run session.get()
?
CodePudding user response:
It looks like you accidentally left out the parentheses here:
session = HTMLSession
So: session.get
--> <function Session.get at 0x10377e550>
.
help(session.get)
--> get(self, url, **kwargs)
.
It's trying to call the get()
method on a class HTMLSession rather than an instance of the class, that is, a session. In that case, the function receives the string argument in place of the implicit self
argument and it doesn't receive the url
argument.
Whereas after:
session = HTMLSession()
session.get
--> <bound method Session.get of <requests_html.HTMLSession object at 0x10276c460>>
help(session.get)
--> get(url, **kwargs)
.
session.get('https://python.org')
--> <Response [200]>
.