黄智嘉---第二次作业

这个作业属于哪个课程 至诚软工实践F班
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/homework/12532
这个作业的目标 使用 fiddler 抓包工具+代码,实时监控朴朴上某产品的详细价格信息
Gitee 地址 https://github.com/lemon-hzj/pupu

一、使用java语言+Fiddler开发工具,对朴朴商品价格的实时监控

1、解题思路

首先是fidder抓包工具的使用,抓取需要的JSON数据

​ 参考bilibilihttps://www.bilibili.com/video/BV1cr4y1T7rL?p=1&share_medium=android&share_plat=android&share_session_id=bd3e11ba-52bc-4584-b5e1-3dc0ddda74c0&share_source=QQ&share_tag=s_i&timestamp=1647152372&unique_k=A4E3jLL

其次搭建springboot项目,对JSON数据进行处理

​ 参考bilibilihttps://www.bilibili.com/video/BV1La4y1x7Wm?spm_id_from=333.880.my_history.page.click

最后idea中git的配置以及使用

​ 参考CSDNhttps://blog.csdn.net/weixin_44544859/article/details/122367157

2、具体实施

(1)先打开微信朴朴小程序

(2)使用fidder抓包工具进行抓包,找到对应的json数据地址

(3)用火狐浏览器打开地址URL,更能清晰直观的看到我们想要的信息

(4)创建springboot项目,并导入maven依赖

(5)创建实体类Product

import lombok.Data;
import lombok.Getter;
import lombok.Setter;

@Data
@Getter
@Setter
public class Product {
    /**
     *@ClassName Product实体类
     *@Description
     *@Author lemon
     *@Date 10:09 2022/3/19
     *@Version 2.1
     **/
    private String name;
    private String spec;
    private Double price;
    private Double market_price;
    private String content;
}

(6)创建java爬虫工具类PuPuUtil.java解析json

package com.lemon.util;

import com.google.gson.Gson;
import com.google.gson.internal.LinkedTreeMap;
import com.lemon.pojo.Product;
import org.jsoup.Connection;
import org.jsoup.Jsoup;

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.HashMap;

public class PuPuUtil {
    /**
     *@ClassName PuPuUtil
     *@Description
     *@Author lemon
     *@Date 10:19 2022/3/19
     *@Version 2.1
     **/
    LinkedTreeMap data ;
    Product product = new Product();
    public void PuPuJson() throws IOException {
        String url="https://j1.pupuapi.com/client/product/storeproduct/detail/deef1dd8-65ee-46bc-9e18-8cf1478a67e9/b088d36b-b296-4288-abac-07d5244f5821";
        Connection.Response res = Jsoup.connect(url)
                .header("Accept", "*/*")
                .header("Accept-Encoding", "gzip, deflate")
                .header("Accept-Language","zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3")
                .header("Content-Type", "application/json;charset=UTF-8")
                .timeout(10000).ignoreContentType(true).execute();
        //创建gson对象
        Gson gson = new Gson();
        //对获取到的数据进行转换
        HashMap hashMap = gson.fromJson(res.body(), HashMap.class);
        //获取data里面的值
        data = (LinkedTreeMap) hashMap.get("data");
        // 获取数据封装到product中
        product.setName((String) data.get("name"));
        product.setSpec((String) data.get("spec"));
        product.setPrice((Double) data.get("price")/100);
        product.setMarket_price((Double) data.get("market_price")/100);
        product.setContent((String) data.get("share_content"));
    }

    /**
     * 展示酸奶商品信息
     * @throws IOException
     */
    public void showProduct() throws IOException {
        //调用PuPu数据处理方法
        PuPuJson();
        //商品信息在控制台输出
        System.out.println("-----------------------商品:"+product.getName()+"-----------------------");
        System.out.println("规格:"+product.getSpec());
        System.out.println("价格:"+product.getPrice());
        System.out.println("原价/折扣价:"+product.getMarket_price()+"/"+product.getPrice());
        System.out.println("详细信息:"+product.getContent());
    }

    /**
     * 每秒钟实时监控酸奶商品的信息
     * @throws IOException
     * @throws InterruptedException
     */
    public void realTimeMonitoring() throws IOException,InterruptedException {
        //每3秒抓取一次商品信息
        while (true){
            PuPuJson();
            System.out.println("当前时间为"+ LocalDateTime.now()+" ,"+product.getName()+":价格为"+product.getPrice());
            Thread.sleep(5000);
        }

    }

}

(7)创建测试类Test.java将数据展示控制台上

package com.lemon.test;

import com.lemon.pojo.Product;
import com.lemon.util.PuPuUtil;

import java.io.IOException;

public class Test {
    /**
     *@ClassName Test测试类
     *@Description
     *@Author lemon
     *@Date 10:23 2022/3/19
     *@Version 2.1
     **/
    public static void main(String[] args) throws IOException, InterruptedException {
        PuPuUtil PuPuUtil = new PuPuUtil();
        //展示酸奶商品信息
        PuPuUtil.showProduct();
        //每5s实时监控商品价格
        PuPuUtil.realTimeMonitoring();
    }
}

(8)输出结果展示

(9)idea配置以及连接git

参考CSDN:https://blog.csdn.net/weixin_44544859/article/details/122367157

(10)gitub commit日志

二、总结

​ 此次作业因为第一次接触fidder,也没学过python,所以采用java爬虫的方式完成,磕磕碰碰,总算完成。这次碰到的比较麻烦的问题是idea在push时,失败了,原因是我使用的idea是比较新的2021.1.1的版本,无法在idea登录gitub,后面是采取创建秘钥的方式登录。还有就是push到远程库报错:

OpenSSL SSL_read: Connection was reset, errno 10054

在网络没问题的情况下,去cmd执行ipconfig /flushdns,刷新 DNS 解析缓存即可

posted @ 2022-03-19 14:39  lemon_hzj  阅读(103)  评论(0编辑  收藏  举报