关于爬虫入门的一些心得(一)

最近研究了一下网络爬虫,用来获取图片网站上的素材。

 

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掉了,可以参考使用爬虫如何伪装自己

 

你可能感兴趣的:(Java,爬虫)