emmmmmmmmmmmmm 刚好在工作空闲期 接触了Jsoup 有趣又有时间 上周开始接触 上周五开始着手写第一个Demo 恐怕也不会有第二个
就...看个开心 欢迎交流...
import org.apache.commons.io.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.*;
import java.net.URL;
/**
* Created by yitiaohu on 2017/9/8.
*/
public class Jsoup{
static String articleTitle;
static int num = 0;
public static void main(String[] args) {
int i = 1;
while (true) {
//页面链接
String url = "";//这里放网址 可能涉及侵权...一律替换...我是玩了假分页 链接后直接拼接分页(page=i)
//获取页面
page(url);
System.out.println("当前是第"+i+"页");
i++;
}
}
public static void page(String url) {
try {
//得到页面
Document document = Jsoup.connect(url).get();
//html:
Elements elements = document.body().getElement***(/*这里放页面结构 怎么样能最简单的拿到文章链接怎么写 算是考验js功底*/);
for (Element e : elements) {
String text = e.getElementsByTag("a").text();
//我是有条件筛选的 只要特定文章...
if (text.contains("****")) {
getArticle(e);
//num是静态变量图片标志位 没玩出来图片怎么扒下来 再放到扒下来的页面里 只好放到同一文件夹下
num = 0;
}
}
} catch (Exception e) {
System.out.println("url连接异常:" + e.getMessage());
//e.printStackTrace();
}
}
public static void getArticle(Element e) {
String attr = e.getElementsByTag("a").attr("href");
try {
Document document = Jsoup.connect(/*文章链接 按照自己的套路写吧*/).get();
Element body = document.body();
articleTitle = body.getElementById("articleTitle").text();
//文章名称有特殊符号 替换下
articleTitle = articleTitle.replace("|", "_");
//本地存储路径
String fileName = "E://JsoupArticle/" + articleTitle + ".html";
FileOutputStream fos = new FileOutputStream(new File(fileName));
OutputStreamWriter osw = new OutputStreamWriter(fos);
// String html = document.html();
// osw.write(html);
//所有html元素
Elements allElements = document.getAllElements();
//存图片
//拿到所有img标签
Elements pic = document.getElementsByTag("img");
for (int i = 0; i < pic.size(); i++) {
getPic(pic.get(i), i + 1);
}
osw.write(String.valueOf(allElements));
osw.close();
System.out.println("抓取文章完成 当前文章:" + articleTitle);
} catch (IOException e1) {
System.err.println("获取文章失败" + e1.getMessage());
}finally {
//写啥都行 就是不想无休止的扒下去 随便检验个 退出程序
if(articleTitle.startsWith("***")){
System.exit(0);
}
}
}
private static void getPic(Element e, int i) {
//emmmmmmmmmm图片路径 怎么拿到图片的src属性 你们开心就好
String src = e.attr("src");
//满足这两个条件的都是我不需要的图片 可自行调整
if (src.startsWith("https:")&&"".equals(src)) {
return;
}
//满足这个条件的 才是我真正需要的图片路径
if (src.startsWith("/img")) {
src = /*我的需要拼装域名*/ + src;
num++;
}
//拼个名字 方便区分
File pic = new File("E://JsoupArticle/" + articleTitle + "_" + num + ".jpg");
try {
FileUtils.copyURLToFile(new URL(src), pic);
} catch (Exception e1) {
System.out.println("获取图片异常");
e1.printStackTrace();
}
}
}
最终效果...