Re: [問題] 模擬提交表單
※ 引述《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
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章