Heim  >  Artikel  >  php教程  >  PHP获取百度百科真实链接

PHP获取百度百科真实链接

WBOY
WBOYOriginal
2016-06-06 20:08:091111Durchsuche

百度百科是百度公司推出的一部内容开放、自由的网络百科全书,其测试版于2006年4月20日上线,正式版在2008年4月21日发布。百度百科旨在创造一个涵盖各领域知识的中文信息收集平台。——摘自互动百科 今天本来想写个php脚本通过键入中文来获取指定词条的内容

百度百科是百度公司推出的一部内容开放、自由的网络百科全书,其测试版于2006年4月20日上线,正式版在2008年4月21日发布。百度百科旨在创造一个涵盖各领域知识的中文信息收集平台。——摘自互动百科

今天本来想写个php脚本通过键入中文来获取指定词条的内容,却发现实现起来并不太简单。

百度百科词条的URL都是为 http://baike.baidu.com/view/数字.htm ,URL跟词条内容并无直接联系;而通过百度搜索获取到的都是 http://www.baidu.com/link?url=iigPGJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil-wx2n0K 之类的URL,显然是被加密过的,百度的防抓取工作还做的挺充分。

上网找了下资料,发现可以对百度百科 searchword.php 的这个搜索程序入手。对 searchword.php 输入要搜索的字符(词条标题),而指定的词条存在时,它就会自动跳转到词条的真实地址。

<?php function geturl($string){
	$string = iconv('utf-8', 'gbk', $string); //将字符转换成GBK编码,若文件为GBK编码可去掉本行
	$encode = urlencode($string); //对字符进行URL编码
	$url = 'http://baike.baidu.com/list-php/dispose/searchword.php?word=' .$encode. '&pic=1';
	$get_contents = file_get_contents($url); //获取跳转页内容
	$get_contents = iconv('gbk', 'utf-8', $get_contents); //将获取的网页转换成UTF-8编码,若文件为GBK编码可去掉本行
	preg_match("/URL=(\S+)'>/s", $get_contents, $out); //获取跳转后URL
	$real_link = 'http://baike.baidu.com' .$out[1];
	return $real_link; //输出真实地址
}
echo geturl('互动百科'); //输出 http://baike.baidu.com/view/1466380.htm
?>

运行上面的代码,脚本就会自动获取到词条的真实地址,即可接着进行抓取词条内容或其他的操作了。

如果觉得本文有什么不足的,请不吝赐教。如果各位有比这更方便的方法,也欢迎分享!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn