最近研究了一下网络爬虫,用来获取图片网站上的素材。
1、创建URL类的对象
URL url = new URL("http://www.mmonly.cc/mmtp/");
2、打开url对应的网络流(注意是字节流)
InputStream in = url.openStream();
3、把字节流转化为字符流(我们能看懂字符..)
InputStreamReader isr = new InputStreamReader(is);// 字符流
4、通过BufferedReader可以帮助我们处理字符流,内置缓冲区,效率比较高
BufferedReader br = new BufferedReader(isr);
5、使用StringBuilder接受字符
StringBuilder sb = new StringBuilder();
6、从流中获取我们想要的信息
String line = null;
while((line = br.readLine()) != null) {
sb.append(line).append("\r\n");
}
7、关闭各种流了。原则一般都是后打开的先关闭吧,养成好习惯。
if(br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(isr != null) {
try {
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
8、最后打印一下所获取到的html文本吧。
System.out.println(sb.toString());
如果获取到得到html出现文字乱码的话,那就查看html的源代码,例如:
就把InputStreamReader的第二个参数选择则所需要的字符集。
InputStreamReader isr = new InputStreamReader(in, "gb2312");
最后的最后贴一下原码。
public class CrawlTest01 {
public static void main(String[] args) {
URL url = null;
InputStream in = null;
InputStreamReader isr = null;
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
url = new URL("http://www.baidu.com/");
in = url.openStream();//通过url获取资源
isr = new InputStreamReader(in, "UTF-8");//网站的编码个格式
br = new BufferedReader(isr);
String line = null;
while((line = br.readLine()) != null) {
sb.append(line).append("\r\n");
}
//打印一下
System.out.println(sb.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流
if(br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(isr != null) {
try {
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
注意:如果没有获取任何信息的话,说明有可能被网站给pass掉了,可以参考使用爬虫如何伪装自己