前言:闲来无事,觉得爬虫技术很高大上,于是小小的研究了一下。
网上查过资料后发现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 指正!