从登录站点获取URL内容

时间:2011-05-14 14:38:42

标签: php url file-get-contents

我想使用PHP获取网站的源代码,但是当我这样做时,它会变空。我相信这是因为您在使用它之前必须登录该站点,并且在询问内容时,PHP调用不在登录的会话中。它是否正确?有没有办法绕过这个或发送登录用户并通过PHP传递,所以可以在以后进行调用?

我还尝试通过浏览器登录到该站点,然后从同一浏览器中调用我的localhost中的* .php文件,但它不起作用。

这是一个必需的登录站点的示例,我想在打开邮箱时获取源代码。这是我通常获取网站内容的方式。但它是空的:

$url = "http://mail.yahoo.com/mc/welcome".$params;
$pagesource = file_get_contents( $url );

echo $pagesource;

例如,如果您使用$url = "http://stackoverflow.com/users/432539/elcool" ;来调用此代码,该代码就是我的个人资料页面,并且无需登录就可以公开使用。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您需要使用类似cURL的内容来模拟登录表单并将POST请求发送到远程服务器。

这里有一个简单的例子,请看这篇文章: http://davidwalsh.name/execute-http-post-php-curl

但是,我会查看远程站点是否提供了一个API,您可以使用该API进行身份验证并获取您正在查找的数据,因为您正在实施的方法(名为Web Scraping)不可靠甚至可能是非法的,具体取决于远程站点的服务条款。

答案 1 :(得分:0)

是的,首先您需要对页面的任何内容进行登录调用,并使用CURLOPT_COOKIEJARCURLOPT_COOKIEFILE设置在使用{作为经过身份验证的用户进行呼叫时跟踪会话{3}}