php 抓取带引号的精确搜索 "batman kill a human"

php scraping excat search with quotation marks "batman kill a human"

我有一个小 PHP 脚本用于抓取 google。我想 google 精确搜索“batman kill a human”我用简单的引号“batman kill a human”传递参数 我可以看到生成了正确的 URL。

我调用带有参数“蝙蝠侠杀死人类”的脚本,我得到>错误 400(错误请求)

例子

root@ubuntu:/var/www/html# php ejemplo.php '“蝙蝠侠杀了一个人”'

---------------- [https://www.google.es/search?q="蝙蝠侠杀死一个人"] -------------- [

错误 400(错误请求)!!1 *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color :#222;填充 .... ... ------------------------------------------ 如果我尝试在 firefox 中使用这个 url,https://www.google.es/search?q="batman kill a human" 你会从 google 得到正确答案。 为什么我在 php 脚本中尝试时没有得到正确答案 这是源代码。
  <?php
   include('simple_html_dom.php');
 
    function file_get_contents_curl($url) {
    /*
    This is a file_get_contents replacement function using cURL
    One slight difference is that it uses your browser's idenity
    as it's own when contacting google. 
    */
    $ch = curl_init();
 
    //  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION , 1);
    curl_setopt($ch, CURLOPT_URL, $url);

 
    $data = curl_exec($ch);
    curl_close($ch);
 
    return $data;
    }


    $busca=$argv[1];
    $cadena="https://www.google.es/search?q=$busca";

    print "\n------------- [$cadena]";
    $data=file_get_contents_curl($cadena);    
    $html = str_get_html($data);


    print "\n------------- [$html]";


    $html->clear(); exit();  
    ?>

查看 urlencode()

上的 PHP manual
$busca=$argv[1];

变成

$busca=urlencode($argv[1]);

呈现为:

https://www.google.es/search?q=batman+kills+a+human