吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4329|回复: 50
收起左侧

[Java 原创] Java爬虫引擎

  [复制链接]
henry307 发表于 2023-3-22 12:20
一、此爬虫引擎利用HttpClient实现,支持http与https,支持自定义UserAgent,自定义Header,支持Proxy,支持HTML抓取,也支持图片抓取。此框架分三个部分:WebClient,Webquest以及ResponseResult,其中WebClient为引擎最核心部分,实现了资源下载,而Webquest为请求部分,自定义UserAgent,自定义Header,设置Proxy全部是针对Webquest,ResponseResult为响应部分,包括响应头,响应流,以及响应cookie等。二、html抓取测试
[C#] 纯文本查看 复制代码
/ 网页抓取测试
    private static  void testHTMLSeek(){

        String token = "";
        try {
            String status = "";

            do {

                // 通过appkey 和 seckey 获取token
                String appkey = "youappkey";
                String seckey = "youseckey";
                WebRequest wb = new WebRequest();
                //wb.setProxy("122.4.45.43:3937"); // 设置代{过}{滤}理
                wb.setMethod("GET");
                wb.setUserAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36");
                wb.setUrl("https://api.qianzhan.com/OpenPlatformService/GetToken?type=JSON&appkey=" + appkey + "&seckey="
                        + seckey);
                ResponseResult sr = WebClient.download(wb);
                String tokenJson = sr.getResponseHtmlStr();
                token = ParseJson(ParseJson(tokenJson, "result"), "token");
                System.out.println("token:" + token);

                // 测试【多条件联合搜索】这个接口
                JSONObject json = new JSONObject();
                json.put("token", token);
                json.put("type", "JSON");
                json.put("companyName","腾讯");
                json.put("areaCode", "");
                json.put("faRen", "");
                json.put("bussinessDes", "");
                json.put("address", "");
                json.put("gd", "");
                json.put("page", "1");
                json.put("pagesize", "10");

                wb.setMethod("POST");
                wb.setUrl("https://api.qianzhan.com/OpenPlatformService/CombineIndexSearch");
                wb.setForm(json.toString());
                wb.setContentType("application/json");
                sr = WebClient.download(wb);
                String result = sr.getResponseHtmlStr();
                System.out.println(result);

                status = ParseJson(result, "status");

            } while (status == "101" || status == "102");

        } catch (Exception e1) {

            e1.printStackTrace();
        }

    }

三、图片下载测试
[C#] 纯文本查看 复制代码
// 图片抓取测试
    private static void testImageSeek(){
        WebRequest req = new WebRequest();
        req.setUrl("https://img3.qianzhan.com/news/201803/30/20180330-40fe3e684227ed76_250x150.jpg");
        req.setMethod("GET");
        ResponseResult rsp = WebClient.download(req);
        byte[] imageBytes = rsp.getResponseContent();
        try {
            String fileName = "测试图片.png";
            String userprofile = System.getenv().get("USERPROFILE");
            File file = new File(userprofile + "\\Desktop\\" + fileName);
            FileOutputStream fops = new FileOutputStream(file);
            fops.write(imageBytes);
            fops.flush();
            fops.close();
            System.out.println("图片已经写入到" + file.getAbsolutePath());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

四、引擎源码下载地址
https://pan.baidu.com/s/1sji6UOhyvOLNv345Vn9EdA?_at_=1679458752261




免费评分

参与人数 6吾爱币 +5 热心值 +5 收起 理由
Rolmax + 1 热心回复!
TheKillerv + 1 谢谢@Thanks!
Hedward + 1 + 1 谢谢@Thanks!
止战之删 + 1 + 1 谢谢@Thanks!
狂笑一君 + 1 + 1 可以我不会java
jianghuai + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

爱吃猫的小鱼儿 发表于 2023-4-1 21:52
本帖最后由 爱吃猫的小鱼儿 于 2023-4-1 21:55 编辑

小兄弟实现的这个还挺有意思,我之前也了解过这方面的资料,给你推荐一个:Java爬虫  http://webmagic.io/docs/zh/posts/ch1-overview/architecture.html
cl201696084076 发表于 2023-3-22 13:17
头像被屏蔽
jianghuai 发表于 2023-3-22 13:42
bullsaibullsai 发表于 2023-3-22 13:51
小白进来学习学习,谢谢分享
dengjunyi 发表于 2023-3-22 14:05
谢谢分享
叶隽 发表于 2023-3-22 14:08
挺有意思的,虽然现在爬虫很少用java
 楼主| henry307 发表于 2023-3-22 14:10
叶隽 发表于 2023-3-22 14:08
挺有意思的,虽然现在爬虫很少用java

嗯,当作学习吧,后面我再写个html解析器
lingwushexi 发表于 2023-3-22 14:13
小白学习,谢谢分享!
ppp936246 发表于 2023-3-22 14:20
经典do while
 楼主| henry307 发表于 2023-3-22 14:23

哈哈,例子随便写的,主要看引擎的源码
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 14:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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