我想从斯坦福健康网站https://myhealth.stanfordmedicine.org/myhealth/inside.asp?mode=download&view=true获取我的医疗摘要页面并将其转储到 JSON 文件中。但是,我似乎很难通过登录页面。
这是我到目前为止提出的代码:
import mechanize
br = mechanize.Browser()
br.set_handle_robots(True)
br.set_handle_refresh(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Open webpage and inspect its contents
url = "https://myhealth.stanfordmedicine.org/"
response = br.open(url)
# Test to make sure we've got the right page
# print response.read() # the text of the page
# Select form
br.select_form(nr=0)
# User credentials
br.form["Login"] = 'user@example.com'
br.form["Password"] = 'password123'
br.submit()
但是,当我运行它时,我收到以下错误:
Traceback (most recent call last):
File "test_mech_bitbybit.py", line 27, in <module>
br.form["Login"] = 'user@example.com'
File "build/bdist.macosx-10.6-intel/egg/mechanize/_form.py", line 2784, in __setitem__
ValueError: control 'Login' is disabled
在进行一些研究时,似乎需要启用 JavaScript 才能处理登录(事实上,禁用 JavaScript,登录/密码字段将被禁用,并且无法在其中输入任何内容)。这使我相信 JavaScript 与保持会话活动有关,并且可能将 cookie 传递给浏览器。这就是我不知所措并质疑我是否应该使用机械化来完成这项任务的地方。
有没有人有经验,谁愿意牵着我的手解决这个问题,并向我解释我需要做什么才能正确地通过这个登录页面和/或模仿任何 JavaScript 被用来完成的事情?