无法使用file_get_contents检索页面

时间:2012-08-30 07:12:36

标签: php

我想用文件获取内容功能抓取一些谷歌页面:

     $encoded='http://www.google.co.il/#hl=en&biw=1440&bih=799&sclient=psy-ab&q=site:'.urlencode("http://stackoverflow.com/");

    echo  file_get_contents($encoded);

当我这样做时:

echo $ encoded;

我明白了:

http://www.google.co.il/#hl=en&biw=1440&bih=799&sclient=psy-ab&q=site:http%3A%2F%2Fstackoverflow.com%2F

当我把它放在网址中时......我得到了我想要的页面

但是当我使用这个功能时,我只是得到了主要的谷歌页面。为什么会这样?

3 个答案:

答案 0 :(得分:4)

这是因为您使用谷歌新的客户端侧面功能。 #之后的所有内容都是针对客户端的,服务器将为您提供http://www.google.co.il/下的内容。

更新

如果您想在自己的计划中使用Google搜索结果,请尝试使用其中一个API for custom search。在这个网址下有一个针对ajax客户端的搜索网络服务:

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=your+term+goes+here

它以JSON返回结果,第一个结果在responseData->results数组:

$search_results = json_decode(file_get_contents('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=your+term+goes+here'), true);
var_export($search_results['responseData']['results'][0]);

但我认为this have been deprecated之后(仍然会回应)。

答案 1 :(得分:1)

您可以删除网址中的#并使用?然后尝试一下

<?php
$encoded='http://www.google.co.il/?hl=en&biw=1440&bih=799&sclient=psy-ab&q=site:'.urlencode("http://stackoverflow.com/");

echo  file_get_contents($encoded);

答案 2 :(得分:0)

export PATH=$PATH:~/sencha/cmd/6.0.2.14/bin ;

$url = "https://www.google.co.in/gfe_rd=cr&ei=RCjlVsPSDPDI8Ae1nruADw&gws_rd=ssl#q=SUCCES"

为我提供Google Page而不是Google搜索页面...