鲍国锴---第二次作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/ |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/homework/12532 |
这个作业的目标 | <从朴朴上爬取需要的数据,面对陌生的语言和软件能够有学习能力> |
Github 地址 | https://github.com/Heyyy-Kong/Fiddler.git |
基础题
成果展示:
代码:
import time
import requests
class Pupu():
# 伪装自己,冒充成微信小程序
headers = {
'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'
}
# 需要访问的地址
url = 'https://j1.pupuapi.com/client/product/storeproduct/detail/deef1dd8-65ee-46bc-9e18-8cf1478a67e9/ed60af11-25b0-48b8-bc5b-f9136d9f89ad'
# 从url中得到json数据
response = requests.get(url, headers=headers).json()
def printContent(self):
# 从json中获取需要的数据
data = self.response['data']
specification = data['spec']
price = data['price'] / 100
discount_price = data['market_price'] / 100
describtion = data['share_content']
product = data['share_title']
print('--------------------商品:' + product + '--------------------')
print('规格:' + specification)
print('价格: ' + str(price))
print('折扣价/原价: ' + str(price) + "/" + str(discount_price))
print('详细内容:' + describtion)
print('--------------------"' + product + '"的价格波动--------------------')
# 间隔一秒钟获取当前商品的价格
for content in range(6):
print('当前时间为' + time.strftime("%Y-%m-%d %H:%M", time.localtime()) + '价格为' + str(price))
time.sleep(1)
if __name__ == '__main__':
pupu = Pupu()
pupu.printContent()
一:解题思路描述
1. 了解fiddler是什么软件,它的主要功能,以及如何使用
2. 一直听说python在爬取数据上有很大优势,所以语言方面选择在B站自学python
3. 通过fiddler监听朴朴的数据,然后通过python爬取信息,再通过json使用键值对得到需要的数据
二:设计实现过程
1. 安装信任证书,通过fiddler监听朴朴的数据(这里选择使用电脑端的微信小程序,不用在手机上额外安装证书)
2. 从fiddler得到所需商品的URL,通过更改User-Agent伪装自己是微信小程序,然后爬取信息
3. 通过json使用键值对得到需要的数据
4. 通过time.sleep()方法间隔一段时间重新获取数据,达到监听的效果
# 间隔一秒钟获取当前商品的价格
for content in range(6):
print('当前时间为' + time.strftime("%Y-%m-%d %H:%M", time.localtime()) + '价格为' + str(price))
time.sleep(1)
三:优化改进
1. 一开始并不清楚python的语法格式,直接把代码写在.py文件中.单纯实现一个功能还好,要是功能多了这种写法就很不健康.优化后把代码写进类中,通过函数调用来实现功能