1

Stanford Health の Web サイト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が達成するために使用されているものを模倣するために何をする必要があるかを説明してくれる経験のある人はいますか?

4

0 に答える 0