2011-08-12 95 views
-1

我得到了下一個問題。我需要獲得幾頁的HTML。所有對PHP函數file()或file_get_contents()或CURL都有效。PHP:獲取aspx文件的內容

但不適用於一個URL! Here it is(當然,我嘗試獲取未縮短的URL的HTML)。

我試了一下,沒有什麼幫助。我可以用browswer打開這個頁面,它返回200狀態,但是...我無法得到它的內容!它返回500錯誤,當我試圖通過捲曲得到它:

Stack Trace: 

[NullReferenceException: Object reference not set to an instance of an object.] 
    ASP.ypDetectClass..ctor() +47 
    ASP.immigration_immigrating_ainp_application_forms_aspx..ctor() +26 
    __ASP.FastObjectFactory_app_web_obqstzij.Create_ASP_immigration_immigrating_ainp_application_forms_aspx() +20 
    System.Web.Compilation.BuildResultCompiledType.CreateInstance() +32 
    System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +119 
    System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +33 
    System.Web.UI.PageHandlerFactory.System.Web.IHttpHandlerFactory2.GetHandler(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +40 
    System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig) +160 
    System.Web.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +93 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155 


Version Information: Microsoft .NET Framework Version:2.0.50727.3623; ASP.NET Version:2.0.50727.3618 " 
+0

這是不可能修復,除非你可以修改託管網站 – ajreal

+1

的ASPX源代碼,你有權搶的HTML這一頁?如果是這樣,請向業主尋求幫助。他們很可能故意阻止您的請求。如果沒有,我認爲我們不能幫助你... – ChrisH

+0

如果你使用Linux,你有沒有試圖用'wget'來獲取這個頁面?如果可行,請嘗試在抓取頁面時操縱發送的HTTP頭。 – rabudde

回答

0

我能使用命令行curl檢索頁面的內容。所以很可能您需要在腳本中設置用戶代理。

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
4

必須在HTTP請求發送User-AgentHTTP頭

使用cURL,您可以設置CURLOPT_USERAGENT選項。這工作:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.2.18) Gecko/20110628 Ubuntu/10.04 (lucid) Firefox/3.6.18'); 
curl_setopt($ch, CURLOPT_URL, 'http://albertacanada.com/immigration/immigrating/ainp-application-forms.aspx'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec ($ch); 
curl_close ($ch); 
echo $result; 

檢查http://php.net/manual/en/function.curl-setopt.php並且這個用戶貢獻也請注意:http://www.php.net/manual/en/function.curl-setopt.php#10692