下面是它在做什麼。我只是使用Firefox中的標準網絡檢查器來快照POST操作。請記住,就像my other answer我指出的那樣,這不是一個特別精心編寫的網站 - JS/POST根本不應該被使用。
首先,這裏的JS - 這是非常簡單的:
function oMd(pModel_,sModel_){
obj=document.form1;
obj.ModelCategory_.value=pModel_;
obj.ModelSno_.value=sModel_;
obj.Model_Sno.value='';
obj.ModelVer.value='';
obj.action='downloads2008detail.asp';
obj.submit();
}
寫入到這些領域:
<input type=hidden name=ModelCategory_ value=''>
<input type=hidden name=ModelSno_ value=''>
所以,你只需要一個POST形式,靶向這個網址:
http://tsd.dlink.com.tw/downloads2008detail.asp
下面是FF網絡分析儀的一組示例數據。這裏只有兩個項目,你需要改變 - 一把抓起JS鏈接 - 你可以抓住那些普通刮:
- 輸入= OK
- ModelCategory = 0
- ModelSno = 0
- ModelCategory_ = DAP
- ModelSno_ = 1150
- Model_Sno =
- ModelVer =
- sel_PageNo = 1
- OS = GPL
你會通過實驗,不是所有的人都需要的也許可以找到。我曾嘗試在瀏覽器中使用GET,但它看起來像目標頁面堅持POST。
不要忘記在點擊和提交之間在刮板內留下相當多的時間,因爲每個點都代表遠程服務器上的點擊;我建議5秒,模仿人類的延遲。如果你這麼做的太快了 - 如果你連接的很好,這一切都可能發生 - 遠程方可能會認爲你在做它,並可能會阻止你的IP。記住刮擦的座右銘:做一個好機器人!
我認爲Selenium可能是矯枉過正的。我注意到,一旦你點擊了一個鏈接,它會進行POST提交(因爲無需詢問用戶就無法刷新結果頁面)。因此,找出點擊鏈接的方法 - 它可能會在表單中插入一個值並提交它。你所需要做的就是模仿你的模仿,使用scraped鏈接找出你需要的輸入。 – halfer
是的,我看起來像派皮是要走的路,我需要爲下載創建文件夾結構,並生成完整的下載列表和路徑,以便在發生更改時排隊並更新。 – jhilliar
我一直在嘗試一些東西,但我仍然無法得到任何工作,這個網站看起來很奇怪。我想我需要某種可以正確掛接到jquery的刮板,但我不知道如何做到這一點。我可以使用時間線功能追蹤所有使用時間線功能進行的調用,但我不知道如何將其調整爲scrapy或類似的方式。 – jhilliar