php获取百度、谷歌搜索的url列表
1,php获取baidu搜索结果中的URL列表。
代码:
<?php
/*
* 获取百度搜索url
* edit: www.jbxue.com
*/
echo "Website: www.jbxue.com\r\n";
/*
搜索字符串示例:
[url]http://www.baidu.com/s?wd=test&pn=30&ie=utf-8&usm=2&rsv_page=1&rn=100[/url]
bs=test 搜索的词
ie=utf-8 页码编码
rn=100 每页显示条数
pn=30 搜索多少条 // ($page - 1) * 10;
*/
/********************
* $keywords 搜索字符
* $page 搜索多少页数据
* $num 每页显示条数
* $result 结果集
*
********************/
define("_RESULT",'baidu_result.txt');//保存文件名
$result = array();//保存结果信息
function geturl($keywords, $page, $num)
{
//$num=100; //每页显示多少条
//$page=10; //搜索多少页
$page=($page - 1) * $num;
//$page = ($page - 1) * 10;
$content = file_get_contents("http://www.baidu.com/s?wd=$keywords&pn=$page&ie=utf-8&usm=2&rsv_page=1&rn=$num");
$pregOne = "/<span\s*class=\"g\">(.*?)\/.*?<\/span>/";//得到URL数组
$fileContent = preg_replace(array("/\<b\>/","/\<\/b\>/"),"",$content); //去除 <b></b> 标签
preg_match_all($pregOne, $fileContent, $urlList); //开始正则
$list= $urlList[1]; //返回获取到的url
global $result;
foreach($list as $u)
{
if(!in_array(trim($u) , $result))
$result[] = trim($u);
}
}
echo "请输入搜索关键字: \r\n";
$baiduDORK = urlencode(fgets(STDIN));
//$baiduDORK='dedecms';//google关键字
echo "保存结果文件: [不输入即默认]: \r\n";
$f_result = trim(fgets(STDIN));
if($f_result==NULL){$f_result=_RESULT;}
if(file_exists("$f_result")){
@unlink("$f_result");
echo "结果文件$f_result 以存在,新结果文件将覆盖 ...\r\n";
}
$names=dirname(__FILE__).DIRECTORY_SEPARATOR.$f_result; //保存文件完整路径
$page = 10; //页数
$num = 100; //每页显示条数
for ($i=1; $i<=$page; $i++){
geturl($baiduDORK, $i, $num, $result);
}
if(count($result)<1){
exit("[-] 数据获取失败!请检查网络环境!\r\n");
}
echo "获取".count($result)."条数据!\r\n";
if(file_put_contents("$names",join("\r\n",$result)))
{
echo "正在保存数据...\r\n";
usleep(100000);
echo "保存位置:\r\n". $names."\r\n\r\n";
}else{
exit("数据获取失败!请检查网络环境!\r\n");
}
?>
2,获取google搜索结果的Url列表。
代码:
<?php
echo "Website: www.jbxue.com\r\n";
//设置超时时间
set_time_limit(0);
error_reporting(E_ERROR);
define("_RESULT",'result.txt');
function geturl($keywords, $page, $num)
{
$page = ($page - 1) * 10;
$content =
file_get_contents("http://www.google.com/search?sclient=psy-ab&hl=en&start=$page&source=hp&q=$keywords&pbx=1&oq=$keywords&num=$num&aq=f&aqi=g4"
);
$preg = '/<h3\s*class="r"\s*>.*/im';
preg_match_all($preg, $content, $m);
preg_match_all('/<a(.*?)>(.*?)/', $m[0][0], $ms);
$list = array();
foreach ($ms[1] as $link)
{
preg_match('/http:\/\/[a-zA-Z0-9._-]*/', $link, $matches);
if (!empty($matches[0]))
{
$list[] = $matches[0];
}
}
$list = array_unique($list);
return $list;
}
echo "Please Enter GoogleDork: \r\n";
$GOOGLEDORK = urlencode(fgets(STDIN));
echo "Result file [Enter for None]: \r\n";
$result = trim(fgets(STDIN));
if($result==NULL){$result=_RESULT;}
if(file_exists("$result")){
@unlink("$result");
echo "Clear Cache ...\r\n";
}
$page = 20;
$num = 100;
for ($i=1;$i<=$page;$i++)
{
$url = geturl($GOOGLEDORK, $i, $num);
print_r('[+] Page: '.$i.' Results Count: '.count($url)."\r\n");
foreach ($url as $u)
{
#print_r($u."\r\n");
@$fp=@fopen('tmp','a');
@fwrite($fp,$u."\r\n");
@fclose($fp);
}
}
$new_filename="$result";
$file=file('tmp');
$array=preg_replace('/($\s*$)|(^\s*^)/m','',$file);
foreach ($array as $key=>$r){
$array[$key]=trim("$r");
}
$names=dirname(__FILE__).DIRECTORY_SEPARATOR.$new_filename;
$new_array=array_values(array_unique($array));
if(file_put_contents("$new_filename",join("\r\n",$new_array)))
{
echo "Get Subdomain Success!\r\n\r\n";
usleep(100000);
echo "Save To:\r\n". $names."\r\n\r\n";
if(file_exists('tmp'))
{
@unlink('tmp');
echo "Clear Cache ...\r\n\r\n";
}
}else {
echo "\r\n[!] Failed! Connect Google Error!\r\n ";
echo "\r\n[-] Plase Proxy...\r\n";
}
exit;
?>
您可能感兴趣的文章:
php记录搜索引擎来路及关键词的实现代码
PHP记录搜索引擎来路、关键字的示例代码
php记录搜索引擎关键词的代码示例
php获取百度、谷歌搜索的url列表
影响Google排名各种因素
google 2012.08.11重大调整:降低侵权网站排名
百度、谷歌关键词排名在线查询
看谷歌搜索质量下滑 来谈搜索引擎用户体验
关于网站的重复内容,10个建议
什么是PageRank?