使用浏览器抓包获取API

1.首先打开要抓取的网页,这里我以http://music.hao123.com/为示例
使用浏览器抓包获取API_第1张图片

2.右击网页属性点击检查或者直接F12进入调试,效果如下
使用浏览器抓包获取API_第2张图片
3.然后再搜索框输入教父使用浏览器抓包获取API_第3张图片
搜索以后可以看到数据发生了变化,我们打开上图中Name列标了红线的部分,Request URL 就是我们需要的API,这个API是搜索歌曲用的,分析URL中的参数,我们可以知道它的参数。这个API返回的是json数据类型,word参数就是我们刚刚查询的关键字。只不过刚刚搜索的内容被转换成了URL编码格式。所以我们在调用这个API时需要将关键字转换成URl编码,然后传入即可。

3.测试API

这里做一个简单的测试,代码如下

package weather;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Scanner;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class SearcheWeather {
	public static void main(String[] args) {
		StringBuffer buffer=new StringBuffer();
		try {
			Scanner input=new Scanner(System.in);
			System.out.print("请输入要查询的音乐:");
			String iput=input.next();
			//转换为url编码
			String urlStr = URLEncoder.encode(iput, "utf-8");
			System.out.println(urlStr);
			//1.建立url
			URL url=new URL("http://sug.qianqian.com/info/suggestion?format=json&word="+urlStr+"&version=2&from=0&callback=window.baidu.sug&third_type=0&client_type=0&_=1539749310840");
			//2.打开http连接
			HttpURLConnection httpUrlConn=(HttpURLConnection)url.openConnection();
			httpUrlConn.setDoInput(true);
			httpUrlConn.setRequestMethod("GET");
			httpUrlConn.connect();
			
			//获得输入
			InputStream inputStream=httpUrlConn.getInputStream();
			InputStreamReader inputStreamReader=new InputStreamReader(inputStream,"utf-8");
			BufferedReader bufferReader=new BufferedReader(inputStreamReader);
			
			
			//将bufferReader放入到Buff里面
			String str=null;
			while ((str=bufferReader.readLine())!=null) {
				buffer.append(str);
			}
			bufferReader.close();
			inputStreamReader.close();
			inputStream.close();
			inputStream=null;
			//断开连接
			httpUrlConn.disconnect();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(buffer.toString());
	}
}

运行结果如下:
在这里插入图片描述
在Web应用中需要将buffer转换成JSON数据类型。

不同的API参数类型也会不同,所以要观察数据的变化去分析,仅供参考。

---------The End

你可能感兴趣的:(拓展)