皖醇

导航

江洁兰---第二次作业

这个作业属于哪个课程 至诚软工实践F班
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/homework/12532
这个作业的目标 学会初步使用fiddler结合编程语言爬取目标数据,进一步熟练使用git
Github 地址 https://github.com/greenye-1/212106715-1/tree/master

一、 任务内容:

【必做】基础:使用 fiddler 抓包工具+代码,实时监控朴朴上某产品的详细价格信息

二、解题思路描述

  • 了解了作业内容后,我首先做的是了解fiddler是什么和怎么用,网上能找到的教程不少,让我对这个有了一定的了解。本着走一步做一步的想法,我想这先用fiddler抓取到数据再考虑后面的任务,没想到过程很是曲折。

  • 能爬到数据后,我就考虑怎么用代码输出相关数据了,对比找到的java和python资料后,我选择用python来实现。由此我学习了菜鸟教程上python的基础知识,结合网上查到的资料和舍友的讲解,按着任务要求,我也慢慢将代码部分实现了。

三、设计实现过程

1.数据爬取

  • 安装好fiddler后,跟着教程一步一步设置好fiddler
  • 让电脑设备和平板(尝试过手机和模拟器,无果)连同一个热点,设置代理和安装证书
  • 打开朴朴app,在fiddler上找到目标json数据,分析数据
  • 实行过程:尝试过fiddler结合手机或模拟器来爬取app的数据,以及安装VituralXposed和平行空间想用来解决办理代理后没有网的问题,折腾了几天,过程中这个问题有解决过,但是仍然是抓不到数据。后来办代理后又没网了,好在舍友借我ipad一用,让我终于能顺利爬到数据。
  • 遇到的问题:办理代理后app可以联网,但爬不到数据,出现Tunnel to 443;办理代理后app不能联网
  • 相关教程链接:https://www.cnblogs.com/zhangyangcheng/p/15218175.html
  • 实现效果:

2.代码实现

3.git commit

  • 写代码实现过程中将代码提交到github
  • 遇到的问题:
  1. fatal: 'git@github.com/greenye-1/212106715-1.git' does not appear to be a git repository
    fatal: Could not read from remote repository.
    参考链接:https://blog.csdn.net/qq_40428678/article/details/84074207
    还是没有解决,多次尝试后,考虑git@github.com:(github名)/(git项目名).git直接复制github上的,才得以解决

  2. ! [rejected]master -> master (fetch first) error: failed to push some refs to 'github.com:greenye-1/212106715-1.git' hint:

3.解决问题所参考链接:https://blog.csdn.net/weixin_43264399/article/details/87350219
https://www.cnblogs.com/cppeterpan/p/7289266.html
图片:

4.博客撰写

  • 记录完成作业的过程,有点奇怪的是,预览效果和实际效果有出入。

四、改进思路

改进方面打算优化代码逻辑,实现长时间实时监控数据。

五、代码说明

import time

import requests


def get_message():
    # 访问地址
    url = "https://j1.pupuapi.com/client/product/storeproduct/detail/7c1208da-907a-4391-9901-35a60096a3f9/d3401c13-4ed0-4579-ab9a-ddbce65b5933"
    # 头部信息
    headers={
        "Accept": "*/*",
        "pp-placeid": "43effc43-4fb2-4473-92e6-8ebecc67bb7a",
        "pp-version": "2021063201",
        "Accept-Encoding": "gzip;q=1.0, compress;q=0.5",
        "Accept-Language": "zh-Hans-CN;q=1.0",
        "pp_storeid": "7c1208da-907a-4391-9901-35a60096a3f9",
        "User-Agent": "Pupumall/2.9.0;iOS 14.4;D7CC2F22-7AA0-47B9-991E-44B33EA43CE6",
        "Host": "j1.pupuapi.com",
        "Connection": "keep-alive",
    }
    # 爬取到的数据存到response里
    response = requests.get(url=url,headers=headers)
    # 将数据解析为json
    jsonData = response.json()
    # 根据json格式从json中提取取需要的信息
    name = jsonData['data']['name']
    float =  jsonData['data']['price']/100
    share_content = jsonData['data']['share_content']
    spec = jsonData['data']['spec']
    # 返回商品名称,价格,详情,规格
    return name, float, share_content, spec
# 输出商品价格变化
def change():
    # 时间按2022-03-19 23:46:32格式输出
    # s = 0
    for a in range(10000):
        time.sleep(1)
        print("当前时间为:"+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+"价格为",get_message()[1])

# 输出商品信息
def show():
    # 返回值是元组,可以通过某个返回值的序号把值取出来# name = get_message()[0] # price = get_message()[1]
    print("-------------------" + "商品:" + get_message()[0] + "-------------------")
    print("规格:" + get_message()[3])
    print("价格:", get_message()[1])
    print("详细内容" + get_message()[2])
    # print("-------------------" + get_message()[0] + "的价格波动" + "-------------------")

if __name__ == '__main__':
    get_message()
    show()
    change()

六:总结

这次作业花的时间比较多,做了有好几天,可以说一路踩着坑做完的,一直在遇到问题,解决问题,再遇到再解决,还好有舍友的大力支持,借我ipaid爬数据和帮我解决部分代码报错问题,不然难以完成作业。有点无语的是,朴朴有些商品下架太快了,作业做到一半,商品下架,就只能重新整一次爬一次数据操作,到提交作业的时候也改了几次url了。

posted on 2022-03-20 11:31  皖醇  阅读(50)  评论(3编辑  收藏  举报