2011-05-14 109 views
1

我想要使用PHP获取网站的源代码,但是当我这样做的时候会出现空白。我相信这是因为您在使用该站点之前必须登录该站点,并且在请求内容时,PHP调用未处于登录会话中。它是否正确?有没有办法绕过这个或发送登录用户并通过PHP传递,以便以后可以进行调用?从登录网站获取网址内容

我也尝试通过我的浏览器登录到该网站,然后从同一浏览器调用我的本地主机中的* .php文件,但它不起作用。

这是我想在打开邮箱时获取源的必需登录网站的示例。这是我通常会获取网站内容的方式。但它出现空:

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

echo $pagesource; 

此代码的工作,如果你把它叫做例如,与$url = "http://stackoverflow.com/users/432539/elcool" ;这是我的个人资料页,并提供公开,而无需登录

任何想法?

+0

网站知道您是否登录的方式是通过cookie中存储的会话ID(可能还有其他内容),因此您必须复制浏览器正在发送的Cookie。我想不出一种简单的方法来做到这一点,但它肯定是可能的。 – jstanley 2011-05-14 14:44:14

回答

1

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

看到这个职位这里一个简单的例子: http://davidwalsh.name/execute-http-post-php-curl

我会,不过,看是否在远程站点提供了可用于验证,并得到你要寻找的数据的API,这是因为您所实施的方法(名为Web Scraping)是不可靠的,甚至可能是非法的,这取决于远程站点的服务条款。

+0

Yeap,也试过cURL,但只是一个简单的版本,并没有工作。我会看看帖子的其余部分。 – elcool 2011-05-14 14:52:50

0

是的,首先你需要做一个登录调用无论页面,并使用CURLOPT_COOKIEJARCURLOPT_COOKIEFILE设置拨打电话作为使用curl_setopt认证的用户时保持会话的轨道。