wis
通过php获取百度百科词条的真实链接的方法

本帖最后由 wis 于 2013-2-12 20:56 编辑

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

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

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

[mw_shl_code=php,true]<?php

/*

** 以下代码适合脚本在UTF-8编码下执行,若在其它编码下执行请依照注释作出适当修改

*/

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

?>[/mw_shl_code]

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

同时也欢迎到我的博客http://wislab.net/参观指导噢~~37!

wis
简单粗暴易懂
展开Biu

因为度娘最喜欢这个粗暴的方式~

[查看全文]
0o团子o0
简单粗暴易懂
展开Biu

简单粗暴易懂

[查看全文]
星守袋鼠
楼上也是眼睛
展开Biu

burningx 发表于 2013-8-16 00:01

楼上也是眼睛,一起用眼睛发动动感光波吧。

你们发的可都是破坏死光啊#6994!

[查看全文]
Mr丶Gravity
好牛逼的样子- - 戳开看看-0-~~
展开Biu

好牛逼的样子- - 戳开看看-0-~~

[查看全文]
至尊麻辣螃海
LZ 博客貌似访问不了?
展开Biu

LZ 博客貌似访问不了?

[查看全文]
wis
风音洛洛
展开Biu

风音洛洛 发表于 2013-2-15 16:50

记得有人问过类似的要在伪春菜上加这个功能的问题来的

我就是看到那个帖子才着手研究介个问题的,嘻嘻

[查看全文]
风音洛洛
记得有人问过类似的要在伪春菜上加这个功能的
展开Biu

记得有人问过类似的要在伪春菜上加这个功能的问题来的

[查看全文]