1
我用機械化連接網站。該網站使用JavaScript創建自定義表單,並在創建後提交。我怎樣才能做到與機械化相同,即:創建一個表單,添加與網站的javascript相同的輸入元素,並提交它?蟒蛇機械化:創建並提交表單
我用機械化連接網站。該網站使用JavaScript創建自定義表單,並在創建後提交。我怎樣才能做到與機械化相同,即:創建一個表單,添加與網站的javascript相同的輸入元素,並提交它?蟒蛇機械化:創建並提交表單
這似乎工作:
br.open(URL)
res = mechanize._form.ParseString(FORM_HTML, BASE_URL)
br.form = res[1]
#continue as if the form was on the page and selected with .select_form()
br['username'] = 'foo'
br['password'] = 'bar'
br.submit()
URL
是訪問的網站的完整URL。 BASE_URL
是URL是在目錄中。FORM_HTML
是具有form
元素的任何HTML,例如:
<form method='post' action='/login.aspx'>
<input type='text' name='username'>
<input type='text' name='password'>
<input type='hidden' name='important_js_thing' value='processed_with_python TM'>
</form>
出於某種原因,mechanize._form.ParseString
回報兩種形式。第一個請求是對基本URL的GET
請求,沒有輸入;第二,從FORM_HTML
正確解析的形式。
查看源代碼,機械化總是爲任何未嵌套在'
你讀過這個嗎?:http://search.cpan.org/~petdance/WWW-Mechanize-1.66/lib/WWW/Mechanize/FAQ.pod#JavaScript – sgallen
該網站的JavaScript最終構造了一個帶參數的URL提交它以獲得結果。是不是很容易解決這個最終階段,並在直接的Python腳本中重構這一步驟,而不是試圖模仿中間JavaScript階段? – gauden
@sgallen他不想解析和執行js代碼,他想模仿它的功能。至少這是我的理解... – jadkik94