吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 12632|回复: 55
收起左侧

[Java 转载] 【分享】Java爬虫

  [复制链接]
a7550237 发表于 2018-5-4 19:41
本帖最后由 a7550237 于 2018-6-17 18:23 编辑

Java爬虫合集


刚刚学习爬虫,把自己学习写的代码分享一下,都放在一个项目里面了,每个包里都是不同的爬虫小demo



爬取的内容:
                           嘀哩嘀哩网站图片的
                           游民星空图库壁纸
                           ACG壁纸
                           爬取QQ音乐
                           还有美女写真
                            捕获.PNG 捕获1.PNG
                       界面就随便写下。。。。

                      在贴一点代码
[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




捕获2.PNG

免费评分

参与人数 21吾爱币 +19 热心值 +20 收起 理由
itfive + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小松悟 + 1 + 1 谢谢@Thanks!
对窗竹影 + 1 热心回复!
天才第一步 + 1 + 1 谢谢@Thanks!
尘心 + 1 + 1 用心讨论,共获提升!
linguangyuan + 1 + 1 厉害了
暴躁的鹅卵石 + 1 感谢分享,我正需要这样的东西学习研究
坎坎坷坷 + 1 + 1 热心回复!
C大调和弦 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
shaobaogege + 1 + 1 用心讨论,共获提升!
War-Horse + 1 + 1 用心讨论,共获提升!
18236167015 + 1 热心回复!
万物皆空 + 1 + 1 谢谢@Thanks!
Mcoco + 1 + 1 楼主代码注释很给力!感谢!
o13674976542 + 1 + 1 谢谢@Thanks!
haanzcx + 1 + 1 热心回复!
wentwent + 1 + 1 用心讨论,共获提升!
wushaominkk + 2 + 1 支持新人贴,加油
新手小菜鸟 + 1 + 1 谢谢@Thanks!
LLLTheone + 1 + 1 我很赞同!
杨大善人 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cxypy 发表于 2018-5-4 20:46

好厉害,支持你,谢谢分享,一起交流学习下
 楼主| a7550237 发表于 2018-5-4 22:22
萌萌哒的小白 发表于 2018-5-4 21:49
楼主快回复下我,java做爬虫都用哪些包?

我主要就用了 Jsoup okhttp  Json-lib
古月银狐 发表于 2018-5-4 20:11
好厉害,支持你,谢谢分享,一起交流学习下
car88lin 发表于 2018-5-4 20:16
谢谢分享
麦迪就是帅 发表于 2018-5-4 20:25
加油,不错!
黑山走天涯 发表于 2018-5-4 20:25
支持下!谢谢分享!!!
darkmacan 发表于 2018-5-4 21:37
真的不簡單,能用JAVA寫這樣的爬蟲呢!
mijimoji 发表于 2018-5-4 21:48
谢谢分享
萌萌哒的小白 发表于 2018-5-4 21:49
楼主快回复下我,java做爬虫都用哪些包?
okity 发表于 2018-5-4 21:57
感谢分享 3q
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 05:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表