標籤:log div uid ack html lis this card 資料
最近在類比HTTP請求抓取資料,但是伺服器是asp.net開發的
分頁控制項代碼
<tr> <td align="left">共 210 條記錄 -- 第 2 頁 -- 共 3 頁</td><td align="right"><a id="OraclePager1_First"
href="javascript:__doPostBack('OraclePager1$First','')"> 首頁 </a> <a id="OraclePager1_Prev" href="javascript:__doPostBack('OraclePager1$Prev','')"> 上一頁
</a> <a id="OraclePager1_Next" href="javascript:__doPostBack('OraclePager1$Next','')"> 下一頁 </a> <a id="OraclePager1_Last"
href="javascript:__doPostBack('OraclePager1$Last','')"> 尾頁 </a><select name="OraclePager1$PageList"
onchange="javascript:setTimeout('__doPostBack(\'OraclePager1$PageList\',\'\')', 0)" id="OraclePager1_PageList"> <option value="0">1</option> <option selected="selected" value="1">2</option> <option value="2">3</option> </select></td> </tr>
點擊下一頁其實是調用js方法
javascript:__doPostBack('OraclePager1$Next','')
通過抓包拼接請求postdata
ticket_postdata = "__EVENTTARGET=OraclePager1%24Next&__EVENTARGUMENT=" + getElementValueByID(ticket_html, "__EVENTARGUMENT") + "&__LASTFOCUS=&__VIEWSTATE=" + getElementValueByID(ticket_html, "__VIEWSTATE") + "&__VIEWSTATEGENERATOR=" + getElementValueByID(ticket_html, "__VIEWSTATEGENERATOR") + "&__VIEWSTATEENCRYPTED=&" + getElementValueByID(ticket_html, "__VIEWSTATEENCRYPTED") + "&txtMemberCardNO=16881270&txtMemberName=&txtStartData=2016-12-01&txtStartTime=00%3A00%3A00&txtEndData=2016-12-29&txtEndTime=23%3A59%3A59&txtPNR=&txtOperatorName=&txtFlight=&txtAirLine=&txtGuestName=&txtGuestCardNo=&txtOrderID=&ddlOrderStatus=&ddlOrderSource=&ddlactivecode=0&txtMobile=&txtTicketNo=&txtKXOrderId=&ddlPayType=2&ddlOrderType=0&OraclePager1%24PageList=" + count; ticket_html = spider.POST(main_url + "Ticket/Ticket/TicketOrderList.aspx?TopMenuID=3&LeftMenuID=306", ticket_postdata, main_url + "Ticket/Ticket/TicketOrderList.aspx?TopMenuID=3&LeftMenuID=306", Encoding.GetEncoding("GB2312"));
結果伺服器返回
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.
For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected,
use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.
坑爹的,根本擷取不到想要的第二頁資料
【asp.net爬蟲】asp.NET分頁控制項抓取第n頁資料 javascript:__doPostBack