无法使用 python 的机械化登录。我做错了什么?



我正在尝试使用python中的机械化登录到这个网站:https://login.haaretz.co.il/从表面上看,它看起来像一个两阶段的登录过程,与谷歌一样,但通过机械化的谷歌登录收据让我无处可去。在submit()-ing之后,浏览器似乎仍然在同一个页面上,只有一个包含单个userName控件的表单。我做错了什么?

>>> import mechanize
>>> br = mechanize.Browser()
>>> br.open('https://login.haaretz.co.il/')
<response_seek_wrapper at 0x7f53bfbc4a00 whose wrapped object = <closeable_response at 0x7f53bfbc4580 whose fp = <_io.BufferedReader name=3>>>
>>> 
>>> br.select_form(nr=0)
>>> 
>>> print(br.form)
<GET https://login.haaretz.co.il/ application/x-www-form-urlencoded
<TextControl(userName=)>
<IgnoreControl(<None>=<None>)>>
>>> br['userName']='my_email@gmail.com'
>>> resp = br.submit()
>>> # and after submitting I'm back a square one
>>> print(br.forms()[0])
<GET https://login.haaretz.co.il/?userName=my_email%40gmail.com application/x-www-form-urlencoded
<TextControl(userName=)>
<IgnoreControl(<None>=<None>)>>
>>> 

这是无望的吗?我做错了吗?

我猜登录过程依赖于JavaScript。如果登录依赖于JavaScript,您将无法使用Mechanize获得想要的结果。参见Mechanize和Javascript

xpath'body/script[2]'的脚本标签有一个具有'loginSuccess': False键:值对的JavaScript对象。因此,我猜测登录需要JavaScript。

最新更新