2012-10-19 71 views
2

我正在使用德爾福,我試圖從網頁獲取源代碼。德爾福:從網頁獲取正確的來源

我的問題是,當我使用Indy(idHttp)或智能組件(clHttp)而不是IE和/或Google Chrome時,獲得不同的源代碼。

有沒有什麼辦法可以用Delphi來檢索網頁源代碼,就像瀏覽器顯示的一樣?

+0

我想詢問一下你的問題的建議(對此沒有答案給你,抱歉)。除非有人知道你究竟在詢問什麼,否則你似乎很可能需要指定IE和谷歌瀏覽器設法顯示哪些特定部分,這些部分從你嘗試使用的Delphi組件返回的結果中丟失。 –

+2

此外,提及網頁網址可能會有所幫助 –

+2

@mhoude:您是什麼意思「......可以處理span標籤」。你只是要求一個URL並回復一堆字符作爲迴應。組件根本不處理這個響應的任何內容。 – NilsB

回答

3

基本上,從組件請求頁面的操作與瀏覽器相同。只有瀏覽器可能會做更多的請求和其他活動,例如。可能會改變DOM的JavaScript。

嘗試關閉JavaScript並再次比較。 如果您熟悉chrome開發人員工具,請檢查第一個HTTP獲取的原始輸入並對其進行比較。如果仍然不同,請修改您的請求以使其與Chrome請求相同。

8

這可能是因爲控件發送的用戶代理字符串與IE或Chrome使用的字符串不同。換句話說,SERVER發回的信息源不同於IE或Chrome。

例如,在TIdDHTTP,設置:

Request.Accept=*/* 
Request.CacheControl=no-cache 
Request.Connection=Keep-Alive 
Request.ContentType=application/x-www-form-urlencoded 
Request.AcceptEncoding=gzip, deflate 
Request.UserAgent=Mozilla/4.0 (compatible; MSIE 6.0; Win32) 
Request.Host=(web site name) 
+0

請注意,'TIdHTTP'爲您管理'ContentType','AcceptEncoding'和'Host'值。其餘的可以手動設置。 –