早上闲来无事,先总结一下昨天学到的最基本的的爬虫。首先说爬虫,其实就是向要爬取的网站发送一个http请求,取得反馈数据,然后解析数据,获得我们想要的数据。简单来说需要两步:首先抓取,即打开http链接,读数据,其实就是个网页。第二步,解析。
代码部分:首先new一个URL对象,并传入要爬取的网址,即URL url = new URL(网址);然后初始化一个链接到那个url的链接。这里需要用到URLConnection抽象类,在这展示一下网上查到的URLConnection请求响应流程:
跟着这张图,接下来代码就是
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoInput(true);
conn.setRequestMethod("GED");
在这我设置了一个User-Agent来欺骗服务器
conn.setRequestProPerty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
接着获取输入流
InputStream in = new InputStream();
然后将字节流转换为字符流,并且为字符流加上缓冲
InputStreamReader reader = new InputStreamReader(in,"utf-8");
BufferedReader br = new BufferedReader(reader);
然后返回读取结果,并将抓取到的每一行储存到data里面
String line,data;
while((line = br.readLine()) != null){
data += line;
}
然后就是记得关流。
br.close();
reader.close();
input.close();
conn.disconnect();
上面只是总结一下,具体代码如下:
public static String sendGet(String str) {
String data = null;
File dataFile = new File("D:\\dataFile.txt");
try {
URL url = new URL(str);
//初始化一个链接到那个url的连接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setRequestMethod("GET");
//设置User-Agent来欺骗服务器
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//获取输入流
InputStream input = conn.getInputStream();
//将字节输入流转换为字符输入流
InputStreamReader reader = new InputStreamReader(input,"utf-8");
//为字符流添加缓冲
BufferedReader br = new BufferedReader(reader);
//读取返回结果
String line;
while ((line = br.readLine()) != null) {
// 遍历抓取到的每一行并将其存储到result里面
data +="\n"+ line;
}
br.close();
reader.close();
input.close();
conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
里面应该还有很多问题,欢迎各位大佬提出意见~