0
我有一個頁面來解析(刮),但首先我必須通過控制措施。
有一些控制號碼我設法計算,當我試圖通過POST方法參數傳遞這些控制號碼和其他東西時,我認爲頁面刷新自己並生成新的控制號碼,所以我計算出的不通過檢查,我無法訪問所需的頁面。網頁刷新http GET方法,計算參數和POST方法在C#
起初,我得到HtmlAgilityPack方法的頁面,並得到這些控制數字的值:
HtmlWeb web = new HtmlWeb();
HtmlDocument mainPage = web.Load(url);
int controlNumber = FindControlNumber();
直路後,我試圖通過POST方法傳遞計算出的數字:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(newUrl);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
string data = @"id=" + id + "&controlNumber=" + controlNumber;
byte[] dataStream = Encoding.UTF8.GetBytes(data);
request.ContentLength = dataStream.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(dataStream, 0, dataStream.Length);
newStream.Close();
HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
string html = sr.ReadToEnd();
但那麼不是導航到期望的頁面,而是在初始頁面顯示消息「錯誤的控制號碼」。
我在做什麼錯?
controlNumber的值是什麼? – ChrisBint
控制號碼是3位整數。我相信這是正確的計算。令我擔心的是,連接或會話過期等等,是什麼強制頁面重新加載和生成新的控制數字,這使得計算出的控制數值變老。 – dzukica
你確定你傳遞的控制號碼真的有效嗎?如果它是刮,你確定沒有任何cookie或任何其他重要的標題,你錯過了?或者可能還有其他POST參數?這就是我所看到的,你的代碼對於獲取頁面內容似乎很好。 –