陈杰---第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/homework/12532
这个作业的目标 实现对朴朴商品抓包解析并培养自学能力
Github 地址 https://gitee.com/cjievv/chenjie_212106703

一、准备工作

  • Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。
    Fiddler是通过改写HTTP代理,让数据从它那通过,来监控并且截取到数据。
  • Fiddler 下载地址 :https://www.telerik.com/download/fiddler

二、实现过程

  • 1.使用Fiddler截获所需信息并提取:

  • 2.使用火狐浏览器打开目标网址(火狐浏览器自带解析成json功能)如下所示:

  • 3.使用idea下载python插件:

  • 4.根据在火狐浏览器的解析编写代码获取并按格式输出信息,具体实现代码如下:
import json
from time import strftime, sleep
import requests


def request_url():
    #目标网址
    url= 'https://j1.pupuapi.com/client/product/storeproduct/detail/eaa4a00c-2098-4ec5-abf2-65ca645d4bee/17714bcb-8432-4867-926d-2c30a7344d05'

    #请求头
    head = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat'
           }

    #发送请求
    res = requests.get(url, headers=head)
    dict = json.loads(res.text)

    #商品名
    name = dict["data"]["name"]

    #商品规格
    specs = dict["data"]["spec"]

    #商品折扣价
    price = str(int(dict["data"]["price"]) / 100)

    #商品原价
    market_price = str(int(dict["data"]["market_price"]) / 100)

    #商品详细内容
    share_content = dict["data"]["share_content"]


    #输出爬取需要的数据信息
    print("-------------商品:" + name + "-------------")
    print("规格:" + specs)
    print("原价:" + price)
    print("原价/折扣价:" + price + "/" + market_price)
    print("详细内容:" + share_content)
    def time():  # 获取时间
    url= 'https://j1.pupuapi.com/client/product/storeproduct/detail/eaa4a00c-2098-4ec5-abf2-65ca645d4bee/17714bcb-8432-4867-              926d-2c30a7344d05'
    head = {
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143   Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat'
            }
    res = requests.get(url, headers=head)
    dict = json.loads(res.text)
    name = dict["data"]["name"]  # 商品名字
    price = str(int(dict["data"]["price"]) / 100)  # 折扣价
    print("-------------" + name + "-------------")

    #抛出异常
    try:
        while (True):
            nowTimeAndPrint = strftime('%Y' + '-' + '%m' + '-' + '%d' + ' %H:%M:%S,价格为' + price)
            print(nowTimeAndPrint)
            #间隔三秒钟获取当前商品的价格
            sleep(3)
    except:
        print("程序结束")
    #运行程序
    if __name__ == '__main__':
    request_url()
    print("\n")
    time()

三、代码解读:

time库包括三类函数: 时间获取:time(); 时间格式化: strftime(); 程序计时: sleep();

sleep() 休眠时间,单位是秒,可以是浮点数

  • 将解析后的数据转成text文本格式转换为json接收
      #发送请求
    res = requests.get(url, headers=head)
    dict = json.loads(res.text)

  • 声明变量名,在解析后的data目录下找到相应的商品名,商品规格,商品折扣价,商品原价,商品详细内容赋值相应的变量名称
    #商品名
    name = dict["data"]["name"]

    #商品规格
    specs = dict["data"]["spec"]

    #商品折扣价
    price = str(int(dict["data"]["price"]) / 100)

    #商品原价
    market_price = str(int(dict["data"]["market_price"]) / 100)

    #商品详细内容
    share_content = dict["data"]["share_content"]

  • 出现异常抛出并执行"程序结束";程序正常则间隔三秒钟获取当前商品的价格
  try:
        while (True):
            nowTimeAndPrint = strftime('%Y' + '-' + '%m' + '-' + '%d' + ' %H:%M:%S,价格为' + price)
            print(nowTimeAndPrint)
            sleep(3)
    except:
        print("程序结束")

四、商品信息:


五、运行效果:


六、Gitee推送:


七、总结:

  • 这是我第一次接触python,在紧迫的时间内利用网络资源学习了基础的语法和格式,在同学们的热情帮助下有了思路和头绪,有了自己的见解,从而最终完成了最基本任务。后续的进阶和高阶任务,将继续学习并完善作业。
posted @ 2022-03-17 22:12  Cjie*  阅读(71)  评论(2编辑  收藏  举报