日常生活中经常会有这样的需求,就是网站上、app上需要展示近期热搜的一些词汇,其实常用的做法当然是自己写爬虫去爬,不过这种办法是在太麻烦了,为了节省时间,可以调用一些接口来实现,比如常用的聚合数据,小葱计算等,这里附上一个java版的策略,代码比较简洁,就不做太多说明了。

packagecom.xiaocongjisuan.module.example;importjava.io.BufferedReader;importjava.io.DataOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.UnsupportedEncodingException;importjava.net.HttpURLConnection;importjava.net.URL;importjava.net.URLEncoder;importjava.util.HashMap;importjava.util.Map;public classApplication {public static final String DEF_CHATSET = "UTF-8";public static final int DEF_CONN_TIMEOUT = 30000;public static final int DEF_READ_TIMEOUT = 30000;public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";//配置您申请的appKey和openId

public static final String APP_KEY ="yours";public static final String OPEN_ID ="yours";//将map型转为请求参数型

public static String urlEncode(Mapparams) {if(params==null){return "";};

StringBuilder sb= newStringBuilder();for (Map.Entryi : params.entrySet()) {try{

sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}

}

String r=sb.toString();if(r.endsWith("&")){

r= r.substring(0,r.length()-1);

}returnr;

}/***

*@paramrequestUrl 请求地址

*@paramparams 请求参数

*@parammethod 请求方法

*@return请求结果

*@throwsException*/

public static String requestContent(String requestUrl, Map params,String method) throwsException {

HttpURLConnection conn= null;

BufferedReader reader= null;

String rs= null;try{//组装请求链接

StringBuffer sb = newStringBuffer();if(method!=null&&method.equalsIgnoreCase("get")){

requestUrl= requestUrl+"?"+urlEncode(params);

}//默认get

URL url = newURL(requestUrl);

conn=(HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");if(method!=null&&method.equalsIgnoreCase("post")){

conn.setRequestMethod("POST");

conn.setDoOutput(true);

conn.setDoInput(true);

}//参数配置

conn.setRequestProperty("User-agent", userAgent);

conn.setUseCaches(false);

conn.setConnectTimeout(DEF_CONN_TIMEOUT);

conn.setReadTimeout(DEF_READ_TIMEOUT);

conn.setInstanceFollowRedirects(false);

conn.connect();if (params!= null && method.equalsIgnoreCase("post")) {try{

DataOutputStream out= newDataOutputStream(conn.getOutputStream());

out.writeBytes(urlEncode(params));

}catch(Exception e) {

e.printStackTrace();

}

}//读取数据

InputStream is =conn.getInputStream();

reader= new BufferedReader(newInputStreamReader(is, DEF_CHATSET));

String strRead= null;while ((strRead = reader.readLine()) != null) {

sb.append(strRead);

}

rs=sb.toString();

}catch(IOException e) {

e.printStackTrace();

}finally{if (reader != null) {

reader.close();

}if (conn != null) {

conn.disconnect();

}

}returnrs;

}public static void main(String[] args) throwsException{

String domain="http://api.xiaocongjisuan.com/";

String servlet="data/hotkeyword/get";

String method="get";

String requestUrl=domain+servlet;

Map params=new HashMap();

params.put("appKey",APP_KEY);

params.put("openId",OPEN_ID);//变动部分

params.put("innerDays",10);

params.put("limit",50);

String result=requestContent(requestUrl,params,method);

System.out.println(result);

}

}

加入你不太喜欢用java,想用php实现,可以用以下代码:

/**

* @author

* @copyright 2019

*/

header("content-type:text/html;charset=utf-8"); //设置编码

//配置您申请的appKey和openId

$app_key = "***";

$open_id = "***";

/**

$url 请求地址

$params 请求参数

$ispost 请求方法

*/

function http_curl($url,$params=false,$ispost=false){

$httpInfo = array();

$ch = curl_init();

curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );

curl_setopt( $ch, CURLOPT_USERAGENT , "xiaocongjisuan");

curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );

curl_setopt( $ch, CURLOPT_TIMEOUT , 60);

curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );

if( $ispost )

{

curl_setopt( $ch , CURLOPT_POST , true );

curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );

curl_setopt( $ch , CURLOPT_URL , $url );

}

else

{

if($params){

curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );

}else{

curl_setopt( $ch , CURLOPT_URL , $url);

}

}

$response = curl_exec( $ch );

if ($response === FALSE) {

//echo "cURL Error: " . curl_error($ch);

return false;

}

$httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );

$httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );

curl_close( $ch );

return $response;

}

function main(){

global $app_key;

global $open_id;

$domain="http://api.xiaocongjisuan.com/";

$servlet="data/hotkeyword/get";

$method="get";

$url=$domain."".$servlet;

$params['appKey']=$app_key;

$params['openId']=$open_id;

//变动部分

$params["innerDays"]=10;

$params["limit"]=50;

//编码转换

foreach ($params as $key=>$value) {

$params[$key]=mb_convert_encoding($value, "UTF-8", "GBK");

}

$paramstring = http_build_query($params);

$content = http_curl($url,$paramstring,true);

return $content;

}

echo main();

?>

其他语言的实现方式点我查看,感谢阅读。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐