陈杰---第二次作业
这个作业属于哪个课程 | 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,在紧迫的时间内利用网络资源学习了基础的语法和格式,在同学们的热情帮助下有了思路和头绪,有了自己的见解,从而最终完成了最基本任务。后续的进阶和高阶任务,将继续学习并完善作业。