本帖最后由 a7550237 于 2018-6-17 18:23 编辑
Java爬虫合集
刚刚学习爬虫,把自己学习写的代码分享一下,都放在一个项目里面了,每个包里都是不同的爬虫小demo
爬取的内容:
嘀哩嘀哩网站图片的
游民星空图库壁纸
ACG壁纸
爬取QQ音乐
还有美女写真
界面就随便写下。。。。
在贴一点代码
[Java] 纯文本查看 复制代码 // 解析网页
public void ParseHtml(int sin,List<String> pagelinks,File dirs) throws IOException {
// 遍历每个页码的链接
for (String pagelink : pagelinks) {
Document doc = Jsoup.connect(pagelink)
.header("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36")
.get();
// 得到需要的条目的链接
Elements itemlinks = doc.select("tr td h3 a[href^=htm]");
// 遍历每个条目
for (Element itemlink : itemlinks) {
// 创建线程 重写run方法 进入每个条目的链接
Thread t = new Thread() {
@Override
public void run() {
try {
String hrefs = itemlink.absUrl("href");
Document imgdoc = Jsoup.connect(hrefs)
.header("User-Agent",
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36")
.get();
// 根据网页情况获得h1标签
Element h1;
h1 = imgdoc.selectFirst("div h1");
if (h1 == null)
h1 = imgdoc.selectFirst("h1#subject_tpc");
// 得到图片或小说或电影的标题
String name = h1.text();
// 得到图片
Elements imgs = imgdoc.select("div.tpc_content img");
// 得到下载链接
Element links = imgdoc
.selectFirst("div.tpc_content a[href^=http://www3.uptorrentfilespace]");
// 得到小说正文
Element body ;
if (sin == 1) {
// 用来保存图片链接
ArrayList<String> arr = new ArrayList<String>();
/*
* 判断进入不同的保存文件的方法 1.如果图片和链接都不为空,说明是电影
* 2.如果1的条件不通过,判断图片是否为空,如果不为空,说明是图片
*
*/
if (imgs != null && links != null) {
for (Element img : imgs) {
String link = img.absUrl("src");
arr.add(link);
System.out.println("获得第" + i++ + "条链接-----" + link);
}
String text = links.text();
download(name, arr, text,dirs);
} else {
for (Element img : imgs) {
String link = img.absUrl("src");
arr.add(link);
System.out.println("获得第" + i++ + "条链接-----" + link);
}
download(name, arr,dirs);
}
}
if (sin == 2) {
body = imgdoc.selectFirst("div.tpc_content");
// 去除小说中的<br>标签,并加上换行
String text = body.toString().replaceAll("<br>", "\\n");
// 开线程去保存小说
new Thread() {
public void run() {
try {
File dir = new File("D://download1//小说//" + name);
if (!dir.exists())
dir.mkdirs();
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(dir, "小说.txt")));
bos.write(text.getBytes());
bos.close();
System.out.println("下载成功 : " + dir);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
};
}.start();
}
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
}
}
};
// 通过线程池动态控制 执行创建的线程
service.execute(t);
}
}
其他的代码下载项目看吧
其实里面是有福利的 但是要自己发掘
链接:https://pan.baidu.com/s/1zW1wRMyP2etiLvfnfASIgw 密码:8ent
|