网络爬虫系列之一:通过URL下载网页

        世界上第一个爬虫叫做"互联网漫游者(www wanderer)",是由MIT学生马修·格雷写的。我想他大概也是通过细心细致的观察后发现:互联网上的页面之间是有联系的。比如说,通过分析一个页面的链接,就能下载到其它页面。而且做起来可能没那么困难,就放手去尝试,第一个爬虫就成了!

        初学爬虫,顺着自己的思路往下做。

        第一个爬虫的第一个部分就是下载,同时也知道第二个部分是通过已经下载的页面下载到新的页面。

        关键的地方在于java.net.URL类中有openStream()方法,就相当于获得下载的入口,看到这个感觉今天的任务就已经完成一半了。

        运行代码过后,刷新工程目录就可以

        TIPS:在写代码的时候出现了乱码问题,第一次是输出到控制台乱码,就在BufferedReader中加了参数”utf-8“,然后下载的页面又乱码,就在OutPutStream后面添加了”utf-8“就ok了。

一、工程目录


图1. 工程目录

二、程序源代码

package csdnBlog;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URL;

/**
 * 功能:通过URL下载网页
 * 
 * 实现方式:通过获得URL的输入流
 * 
 * @author <span style="color:blue"><b>胡征南</b></span>
 * 
 */
public class URLPageDownload {

	/**
	 * 下载页面的具体函数实现
	 * 
	 * @param str
	 *            输入的地址
	 */
	public static void downloadPage(String str) {
		BufferedReader br = null;
		FileOutputStream fos = null;
		OutputStreamWriter osw = null;
		String inputLine;
		try {
			URL url = null;
			url = new URL(str);

			// 通过url.openStream(),来获得输入流
			br = new BufferedReader(new InputStreamReader(url.openStream(),
					"UTF-8"));

			File file = new File("download.html");
			fos = new FileOutputStream(file);
			osw = new OutputStreamWriter(fos, "utf-8");

			// 将输入流读入到临时变量中,再写入到文件
			while ((inputLine = br.readLine()) != null) {
				osw.write(inputLine);
				// System.out.println(inputLine);
			}
			
			br.close();
			osw.close();
			System.err.println("下载完毕!");
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (br != null && osw != null) {
					br.close();
					osw.close();
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		// 此处做测试
		URLPageDownload.downloadPage("http://www.csu.edu.cn/");
	}

}

三、运行效果
图2. 运行后刷新项目产生的新文件


图3. 运行download.html的效果


四、参考资料

乱码解决方案参考资料:

1、文件读取乱码

http://blog.csdn.net/greenqingqingws/article/details/7395213

2、文件写入乱码

http://hi.baidu.com/duanxzf/item/ff9837e4c2eaea1b8c3ea870

网络爬虫系列之一:通过URL下载网页,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。