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]);
呈现为:
我有一个小 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()
$busca=$argv[1];
变成
$busca=urlencode($argv[1]);
呈现为: