首頁 > 後端開發 > php教程 > 怎么取出百度某排行榜50条并在每条加前后缀呢

怎么取出百度某排行榜50条并在每条加前后缀呢

WBOY
發布: 2016-06-23 13:43:53
原創
1069 人瀏覽過

如http://top.baidu.com/buzz?b=26&c=1&fr=topcategory_c1


回复讨论(解决方案)

已把主要???集成??,加前後?你想怎?加都可以了。

<?phpfunction getContent($url){	$ch = curl_init();	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);		curl_setopt($ch, CURLOPT_URL, $url);	$response = curl_exec($ch);	if($error=curl_error($ch)){		die($error);	}	curl_close($ch);	$content = iconv('GB2312','UTF8',$response);	return $content;}function getKeywords($content){	// keywords	preg_match_all('/<td class="keyword">(.*?)<\/td>/is', $content, $keywords);	$data = $keywords[1];	$result = array();	foreach($data as $val){		preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp);		array_push($result, array('name'=>$tmp[2][0],'url'=>'http://top.baidu.com'.substr($tmp[1][0],1)));	}	return $result;}function getTc($content){	// tc	preg_match_all('/<td class="tc">(.*?)<\/td>/is', $content, $tc);	$data = $tc[1];	$result = array();	foreach($data as $val){		preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp);		array_push($result, array('brief'=>$tmp[1][0], 'news'=>$tmp[1][1], 'tieba'=>$tmp[1][2]));	}	return $result;}function getNum($content){	// last	preg_match_all('/<td class="last">(.*?)<\/td>/is', $content, $last); //icon-rise up icon-fall down	$data = $last[1];	$result = array();	foreach($data as $val){		preg_match_all('/<span.*?class="(.*?)">(.*?)<\/span>/is', $val, $tmp);		array_push($result, array('flag'=>str_replace('icon-','',$tmp[1][0]), 'num'=>$tmp[2][0]));	}	return $result;}$url = 'http://top.baidu.com/buzz?b=26&c=1&fr=topcategory_c1';$content = getContent($url);$result = array();$keywords = getKeywords($content);$tc = getTc($content);$num = getNum($content);for($i=0,$len=count($keywords); $i<$len; $i++){	$tmp = array(		'name' => $keywords[$i]['name'],		'url' => $keywords[$i]['url'],		'brief' => $tc[$i]['brief'],		'news' => $tc[$i]['news'],		'tieba' => $tc[$i]['tieba'],		'flag' => $num[$i]['flag'],		'num' => $num[$i]['num']	);	array_push($result, $tmp);}echo '<pre class="brush:php;toolbar:false">';print_r($result);echo '
登入後複製
登入後複製
';?>

?集后的??格式如下:

Array(    [0] => Array        (            [name] => 匆匆那年            [url] => http://top.baidu.com/detail?b=26&c=1&w=%B4%D2%B4%D2%C4%C7%C4%EA            [brief] => http://baike.baidu.com/search/word?word=%B4%D2%B4%D2%C4%C7%C4%EA            [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%B4%D2%B4%D2%C4%C7%C4%EA            [tieba] => http://tieba.baidu.com/f?kw=%B4%D2%B4%D2%C4%C7%C4%EA            [flag] => rise            [num] => 162540        )    [1] => Array        (            [name] => 一个人的武林            [url] => http://top.baidu.com/detail?b=26&c=1&w=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6            [brief] => http://baike.baidu.com/search/word?word=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6            [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6            [tieba] => http://tieba.baidu.com/f?kw=%D2%BB%B8%F6%C8%CB%B5%C4%CE%E4%C1%D6            [flag] => rise            [num] => 75428        )    [2] => Array        (            [name] => 星际穿越            [url] => http://top.baidu.com/detail?b=26&c=1&w=%D0%C7%BC%CA%B4%A9%D4%BD            [brief] => http://baike.baidu.com/search/word?word=%D0%C7%BC%CA%B4%A9%D4%BD            [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%D0%C7%BC%CA%B4%A9%D4%BD            [tieba] => http://tieba.baidu.com/f?kw=%D0%C7%BC%CA%B4%A9%D4%BD            [flag] => rise            [num] => 70538        )    [3] => Array        (            [name] => 心花路放            [url] => http://top.baidu.com/detail?b=26&c=1&w=%D0%C4%BB%A8%C2%B7%B7%C5            [brief] => http://baike.baidu.com/search/word?word=%D0%C4%BB%A8%C2%B7%B7%C5            [news] => http://news.baidu.com/ns?tn=news&from=news&cl=2&rn=20&ct=1&word=%D0%C4%BB%A8%C2%B7%B7%C5            [tieba] => http://tieba.baidu.com/f?kw=%D0%C4%BB%A8%C2%B7%B7%C5            [flag] => fall            [num] => 68233        )        。。。)
登入後複製

function getContent 修改?以下代?。

function getContent($url){	$ch = curl_init();	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);		curl_setopt($ch, CURLOPT_URL, $url);	curl_setopt($ch, CURLOPT_TIMEOUT, 300);	$response = curl_exec($ch);	if($error=curl_error($ch)){		die($error);	}	curl_close($ch);	$content = iconv('GB2312','UTF8//IGNORE',$response);	return $content;}
登入後複製

已把主要???集成??,加前後?你想怎?加都可以了。

<?phpfunction getContent($url){	$ch = curl_init();	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);		curl_setopt($ch, CURLOPT_URL, $url);	$response = curl_exec($ch);	if($error=curl_error($ch)){		die($error);	}	curl_close($ch);	$content = iconv('GB2312','UTF8',$response);	return $content;}function getKeywords($content){	// keywords	preg_match_all('/<td class="keyword">(.*?)<\/td>/is', $content, $keywords);	$data = $keywords[1];	$result = array();	foreach($data as $val){		preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp);		array_push($result, array('name'=>$tmp[2][0],'url'=>'http://top.baidu.com'.substr($tmp[1][0],1)));	}	return $result;}function getTc($content){	// tc	preg_match_all('/<td class="tc">(.*?)<\/td>/is', $content, $tc);	$data = $tc[1];	$result = array();	foreach($data as $val){		preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp);		array_push($result, array('brief'=>$tmp[1][0], 'news'=>$tmp[1][1], 'tieba'=>$tmp[1][2]));	}	return $result;}function getNum($content){	// last	preg_match_all('/<td class="last">(.*?)<\/td>/is', $content, $last); //icon-rise up icon-fall down	$data = $last[1];	$result = array();	foreach($data as $val){		preg_match_all('/<span.*?class="(.*?)">(.*?)<\/span>/is', $val, $tmp);		array_push($result, array('flag'=>str_replace('icon-','',$tmp[1][0]), 'num'=>$tmp[2][0]));	}	return $result;}$url = 'http://top.baidu.com/buzz?b=26&c=1&fr=topcategory_c1';$content = getContent($url);$result = array();$keywords = getKeywords($content);$tc = getTc($content);$num = getNum($content);for($i=0,$len=count($keywords); $i<$len; $i++){	$tmp = array(		'name' => $keywords[$i]['name'],		'url' => $keywords[$i]['url'],		'brief' => $tc[$i]['brief'],		'news' => $tc[$i]['news'],		'tieba' => $tc[$i]['tieba'],		'flag' => $num[$i]['flag'],		'num' => $num[$i]['num']	);	array_push($result, $tmp);}echo '<pre class="brush:php;toolbar:false">';print_r($result);echo '
登入後複製
登入後複製
';?>


为什么我测试时,这个数组输出的是空的

你的php文件是否utf8

你的php文件是否utf8


是的

那你先把getContent的返回?出,看看有什?。

?了,你把????打?,如果白屏估?是??。你是否有安?curl?
在?面?加上
ini_set('display_errors','on');
error_reporting(E_ALL);
看看有什??。如果提示curl?有安?的,
可以改getContent?

function getContent($url){    $response = file_get_contents($url); // ?句代替curl     $content = iconv('GB2312','UTF8//IGNORE',$response);     return $content;}
登入後複製

什么都没输出
编码换成ANSI也不成

你测试可用的文件能打包的吗

Notice: iconv() [function.iconv]: Wrong charset, conversion from `GB2312' to `UTF8//IGNORE' is not allowed in F:\PHPnow-1.5.6\vhosts\test.php on line 15
登入後複製
登入後複製

$content = iconv('GB2312','UTF-8',$response);
登入後複製


这样就成了


问题我是个菜鸟,这个数组要怎么取出来正常使用呢

$content = iconv('GBK','UTF-8//IGNORE', $response);

Notice: iconv() [function.iconv]: Wrong charset, conversion from `GB2312' to `UTF8//IGNORE' is not allowed in F:\PHPnow-1.5.6\vhosts\test.php on line 15
登入後複製
登入後複製

$content = iconv('GB2312','UTF8//IGNORE',$response);
改?
$content = iconv('GBK','UTF8//IGNORE',$response);
??

拿到???不知道怎?用。。。呵呵。

你想?示的?子是怎?的,就做成怎?的html,然後在需要的地方,插入????。

数组一巧不同,郁闷了

其实我只要成这样就行的

<a href="xxx.php?title=匆匆那年">匆匆那年</a><a href="xxx.php?title=匆匆那年">匆匆那年</a><a href="xxx.php?title=匆匆那年">匆匆那年</a><a href="xxx.php?title=匆匆那年">匆匆那年</a><a href="xxx.php?title=匆匆那年">匆匆那年</a>
登入後複製

??出的完整例子,你好好??下。
中?你想改什?,直接改就可以了。

<?phpfunction getContent($url){	$ch = curl_init();	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);		curl_setopt($ch, CURLOPT_URL, $url);	curl_setopt($ch, CURLOPT_TIMEOUT, 300);	$response = curl_exec($ch);	if($error=curl_error($ch)){		die($error);	}	curl_close($ch);	$content = iconv('GBK','UTF-8//IGNORE',$response);	return $content;}function getKeywords($content){	// keywords	preg_match_all('/<td class="keyword">(.*?)<\/td>/is', $content, $keywords);	$data = $keywords[1];	$result = array();	foreach($data as $val){		preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp);		array_push($result, array('name'=>$tmp[2][0],'url'=>'http://top.baidu.com'.substr($tmp[1][0],1)));	}	return $result;}function getTc($content){	// tc	preg_match_all('/<td class="tc">(.*?)<\/td>/is', $content, $tc);	$data = $tc[1];	$result = array();	foreach($data as $val){		preg_match_all('/<a.*?href="(.*?)".*?>(.*?)<\/a>/is', $val, $tmp);		array_push($result, array('brief'=>$tmp[1][0], 'news'=>$tmp[1][1], 'tieba'=>$tmp[1][2]));	}	return $result;}function getNum($content){	// last	preg_match_all('/<td class="last">(.*?)<\/td>/is', $content, $last); //icon-rise up icon-fall down	$data = $last[1];	$result = array();	foreach($data as $val){		preg_match_all('/<span.*?class="(.*?)">(.*?)<\/span>/is', $val, $tmp);		array_push($result, array('flag'=>str_replace('icon-','',$tmp[1][0]), 'num'=>$tmp[2][0]));	}	return $result;}$url = 'http://top.baidu.com/buzz?b=340&c=1&fr=topbuzz_b339_c1';$content = getContent($url);$result = array();$keywords = getKeywords($content);$tc = getTc($content);$num = getNum($content);for($i=0,$len=count($keywords); $i<$len; $i++){	$tmp = array(		'name' => $keywords[$i]['name'],		'url' => $keywords[$i]['url'],		'brief' => $tc[$i]['brief'],		'news' => $tc[$i]['news'],		'tieba' => $tc[$i]['tieba'],		'flag' => $num[$i]['flag'],		'num' => $num[$i]['num']	);	array_push($result, $tmp);}?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html> <head>  <meta http-equiv="content-type" content="text/html;charset=utf-8">  <title> baidu </title> </head> <body>	<table>	<?php	$i = 1;	foreach($result as $val){	?>	<tr>		<td><?=$i ?></td>		<td><a href="<?=$val['url'] ?>"><?=$val['name'] ?></a></td>		<td><a href="<?=$val['brief'] ?>">?介</a></td>		<td><a href="<?=$val['news'] ?>">新?</a></td>		<td><a href="<?=$val['tieba'] ?>">?吧</a></td>		<td><?php if($val['flag']=='fall'){ echo '↓'; }else{echo '↑'; } ?><?=$val['num'] ?></td>	</tr>	<?php		$i++;	}	?>	</table> </body></html>
登入後複製

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板