Re: [問題] 模擬提交表單

看板Python作者 (大資佬)時間13年前 (2012/09/16 12:45), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《amigcamel (阿吉amig)》之銘言: : 如題 : 我想用python模擬提交表單 : 以這個網址為例子:http://www.frdic.com/dict/vas/ : 這是一個法文字典的網站 : 我查詢的是'vas'這個字 : 而在網頁中有一個叫做「变位时态选择」的選單 : 比如說我點了「先将来时 - Indicatif Future Antérieur」 : 網頁出現新的資料 : 然後我要把它抓下來 : 我試著用mechanize這個模組去做 : 但不知道哪裡卡住總是不成功... : 我想或許某些python內建的模組像是urllib就可以達成 : 只是我也不太熟... : 拜託有人可以幫幫忙嗎? : ------------------------------------------- : 我把我的snippet po在這好了: : import mechanize : url = 'http://www.frdic.com/dict/vas/' : br = mechanize.Browser() : br.open(url) : br.select_form('aspnetForm') : control = br.form.controls[17] : control.value = ['14'] # 「先将来时 - Indicatif Future Antérieur」的value為'14' : br.submit() : data = br.response().read() : #結果又是跟沒有提交表單是一樣的... 從source code看出來他用ajax來實現這部分 function addCgLbSelectedEvent() { $("#cg_select").change(function () { $("#cg_select option").each(function () { if ($(this).attr("selected")) { var a = $("#dicTabs").find("#tab_cg"), b = a.find("input"); $.ajax({ type: "POST", url: "/Services/dicServices.asmx/GetTabExpWithCgIdx", data: "{tabStatus:'" + b.attr("value") + "', whichCg:" + $(this).attr("value") + "}", contentType: "application/json", dataType: "json", success: function (b) { a.find("#CgMain").html(b.d) } }) } }) }) } 要仔細研究他怎麼傳的是可以 也可以用一些有 web dev的瀏覽器就可以看他post的資料是什麼 然後模擬他送的header照著做一次就行了 我剛試了一下 回傳的Content-Type也是json 照他ajax的寫法 會取代掉 <div id="CgMain">裡的html code: http://codepad.org/gBqKlkfd -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.32

09/17 19:20, , 1F
感謝!成功了!
09/17 19:20, 1F
文章代碼(AID): #1GLLbl1r (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1GLLbl1r (Python)