我正在使用德爾福,我試圖從網頁獲取源代碼。德爾福:從網頁獲取正確的來源
我的問題是,當我使用Indy(idHttp)或智能組件(clHttp)而不是IE和/或Google Chrome時,獲得不同的源代碼。
有沒有什麼辦法可以用Delphi來檢索網頁源代碼,就像瀏覽器顯示的一樣?
我正在使用德爾福,我試圖從網頁獲取源代碼。德爾福:從網頁獲取正確的來源
我的問題是,當我使用Indy(idHttp)或智能組件(clHttp)而不是IE和/或Google Chrome時,獲得不同的源代碼。
有沒有什麼辦法可以用Delphi來檢索網頁源代碼,就像瀏覽器顯示的一樣?
基本上,從組件請求頁面的操作與瀏覽器相同。只有瀏覽器可能會做更多的請求和其他活動,例如。可能會改變DOM的JavaScript。
嘗試關閉JavaScript並再次比較。 如果您熟悉chrome開發人員工具,請檢查第一個HTTP獲取的原始輸入並對其進行比較。如果仍然不同,請修改您的請求以使其與Chrome請求相同。
這可能是因爲控件發送的用戶代理字符串與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)
請注意,'TIdHTTP'爲您管理'ContentType','AcceptEncoding'和'Host'值。其餘的可以手動設置。 –
我想詢問一下你的問題的建議(對此沒有答案給你,抱歉)。除非有人知道你究竟在詢問什麼,否則你似乎很可能需要指定IE和谷歌瀏覽器設法顯示哪些特定部分,這些部分從你嘗試使用的Delphi組件返回的結果中丟失。 –
此外,提及網頁網址可能會有所幫助 –
@mhoude:您是什麼意思「......可以處理span標籤」。你只是要求一個URL並回復一堆字符作爲迴應。組件根本不處理這個響應的任何內容。 – NilsB