其实我只想要爬到整个网页的源代码的就好.通过java的一个包jsoup,就可以直接爬取了,后面有下载源代码(含jsoup包)的链接.

输入:网页链接

输出:网页源代码

代码比较简单,解析都在代码中:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.FileOutputStream;

public class Main {

    public static void main(String[] args) {

        //在这里输入所有想要爬取的网址
        String[] urlPath = new String[]{
                "http://daily.zhihu.com/"
        };

        for (String anUrlPath : urlPath) {
            try {
                Document document = Jsoup.connect(anUrlPath)
                        .userAgent("Mozilla/4.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)")
                        .get();
                //此时document.html()就是全部网页信息,如果想要让程序酷炫一些,可以把这些内容打印在控制台

                String pathname = anUrlPath;
                //将url作为文件名,下面是消除不能在文件名中出现的非法字符
                pathname = pathname.replace("http://", "");
                pathname = pathname.replace('/', ' ');
                pathname = pathname.replace('\\', ' ');
                pathname = pathname.replace(':', ' ');
                pathname = pathname.replace('<', ' ');
                pathname = pathname.replace('>', ' ');
                pathname = pathname.replace('|', ' ');
                pathname = pathname.replace(" ", "");
                pathname = pathname + ".txt";

                //将内容保存到本地
                FileOutputStream os = new FileOutputStream(pathname, true);
                //在文件的第一行写入爬取的网页的url,方便以后用程序自动处理时识别url
                os.write(anUrlPath.getBytes("utf-8"));
                os.write("\r\n".getBytes());
                os.write(document.html().getBytes("utf-8"));
            } catch (Exception e) {
                //如果出现比如 DNS解析失败,或是拒绝访问等报错,将它们写在exception.txt文件中,并且保证程序继续运行
                try {
                    FileOutputStream os = new FileOutputStream("exception.txt", true);
                    os.write(e.toString().getBytes("utf-8"));
                    os.write("\r\n".getBytes());
                    System.out.println(e);
                } catch (Exception e1) {
                    System.out.println(e1);
                }
            }
        }
    }
}

只需要在urlPath中输入想要爬取的网页链接,就可以直接运行了.我这里就跟风,用"知乎日报"的网址做栗子了.

之后在当前目录中会出现一个文件来保存网页源代码:daily.zhihu.com.txt,如果出现任何报错,都不会使程序中断,而且会将报错的信息保存在一个文件:exception.txt中.


得到了网站的源代码,就可以通过自定义的方式来提取网页中的信息了,之后如果有时间我还会写一个爬取整站代码的博客,到时候输入多个链接,保存成文件夹,把它的整站代码爬下来.