Home > Backend Development > PHP Tutorial > 怎么取出百度某排行榜50条并在每条加前后缀呢

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

WBOY
Release: 2016-06-23 13:43:53
Original
1070 people have browsed it

如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 '
Copy after login
Copy after login
';?>

?集后的??格式如下:

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        )        。。。)
Copy after login

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;}
Copy after login

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

<?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 '
Copy after login
Copy after login
';?>


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

你的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;}
Copy after login

什么都没输出
编码换成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
Copy after login
Copy after login

$content = iconv('GB2312','UTF-8',$response);
Copy after login


这样就成了


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

$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
Copy after login
Copy after login

$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>
Copy after login

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

<?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>
Copy after login

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template