用Java写一个爬虫

前言:闲来无事,觉得爬虫技术很高大上,于是小小的研究了一下。

网上查过资料后发现java爬虫也是有很多种类的,可以使用比较成熟的框架。我这里使用的是jsoup,简单粗暴的一种技术。

先做来个简单的demo:

先找一个简单点的网页,就这个了,读者杂志,文章还是很不错的。

ps:此网址获取数据将只用于练习,不会非法传播。


 开始写代码:

package com.lezhi;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.FileWriter;

public class PaChongTest {
    public void test() {
        FileWriter fw =null;
        int a =1;
        try {
            String allUrl ="http://www.52duzhe.com";
            Document docAll = Jsoup.connect(allUrl).get();
            Elements urlAll = docAll.select(".time");
            Elements hrefAll = urlAll.select("a[href]");
            for (Element hr : hrefAll) {
                String url = hr.attr("abs:href");
                Document doc = Jsoup.connect(url).get();
                //获得文章标题
                Elements main = doc.getElementsByClass("title");
                Elements link = main.select("a[href]");
                for (Element hr1 : link) {
                    String href = hr1.attr("abs:href");
                    Document inDoc = Jsoup.connect(href).get();
                    Elements inMain = inDoc.getElementsByClass("blkContainer");
                    Elements h1 = inMain.select("h1");
                    Elements artInfo = inMain.select(".artInfo");
                    Elements blkContainerSblkCon = inDoc.getElementsByClass("blkContainerSblkCon");
                    Elements p = blkContainerSblkCon.select("p");
                    String title = h1.text();
                    String author = artInfo.select("#pub_date").text();
                    String source = artInfo.select("#media_name").text();
                    String content = "";
                    for (Element contxt : p) {
                        content += contxt.text();
                    }
                    fw = new FileWriter("D:\\读者\\"+hr.text()+".doc", true);
                    fw.write("标题:"+title + "\r\n" + author + "\r\n" + source + "\r\n" + content);//这里向文件中输入结果123
                    fw.flush();
//                    System.out.println("标题:" + title);
//                    System.out.println(author);
//                    System.out.println(source);
//                    System.out.println("内容:" + content);
                    System.out.println("导出第"+a+++"个");
                }
                System.out.println("test");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        PaChongTest pt = new PaChongTest();
        pt.test();


    }
}

 

fw = new FileWriter("D:\\读者\\"+hr.text()+".doc", true);

 这里的路径修改成自己电脑的路径。

所用jar包 jsoup-1.11.3.jar,连接在后面。

 

运行效果:

至此一个简单的Java爬虫demo完成啦!

最后附上源码:https://download.csdn.net/download/zhongyantao1022/10566017
源代码中51行这里写错了 content += p.text();  应该是 content += contxt.text(); 

感谢 @x_ring 指正!

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页