杨仕金---第二次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/
这个作业要求在哪里 https://edu.cnblogs.com/campus/fzzcxy/ZhichengSoftengineeringPracticeFclass/homework/12532
这个作业的目标 培养良好编码习惯,并通过抓包工具分析post、get协议,并模拟请取数据对进行json解析
Github 地址 https://github.com/fengdufan/homework02

一.【必做】基础:实时监控朴朴上某产品的详细价格信息

1. 解题思路

(1) PC端使用Fiddler对PC端微信小程序中朴朴相关商品的信息进行抓包
(2) 抓取的网址用Chrome打开查看headers部分,获取User-Agent信息
(3) 用哔哩哔哩学习json如何解析数据,并使用PyCharm编写代码
(4) 使用git推送到github的仓库

2. 设计实现

  总共编写了1个类,2个函数。一个函数实现获取商品的名字、规格、原价、折扣价、详细信息,另一个函数实现实时监控朴朴上商品的详细价格信息,然后主函数(main)依次调用两个函数

3. 代码说明

(1) request_url()函数获取相关信息部分代码

    spec = dict1["data"]["spec"]  # 规格
    price = str(int(dict1["data"]["price"]) / 100)  # 折扣价
    market_price = str(int(dict1["data"]["market_price"]) / 100)  # 原价
    share_content = dict1["data"]["share_content"]  # 详细内容
    print("-------------商品:" + name + "-------------")
    print("规格:" + spec)
    print("原价:" + price)
    print("原价/折扣价:" + price + "/" + market_price)
    print("详细内容:" + share_content)

(2) time()函数实时监控部分代码

    try:  #终止程序时,不会报错
        while (True):
            nowTimeAndPrint = strftime('%Y' + '-' + '%m' + '-' + '%d' + ' %H:%M:%S,价格为' + price)
            print(nowTimeAndPrint)
            sleep(5)
    except:
        print("程序结束")

(3) git提交仓库代码

git init -b main
git remote add origin "https://github.com/fengdufan/homework02.git"
git pull "https://github.com/fengdufan/homework02.git" main
git config user.name "fengdufan"
git config user.email "2316896823@qq.com"
git add .
git commit -m "实时监控朴朴商品价格"
git push origin main

4.运行效果

(1) 获取User-Agent信息



(2)实时监控效果图



(3)git提交github效果图


4.后续完善

(1) 能够同时检测多个商品价格信息
(2) 检测的信息存在本地文件

二.【选做】进阶:爬取自己的知乎收藏夹

1. 解题思路

(1) PC端使用Fiddler对知乎收藏夹的信息进行抓包
(2) 抓取的网址用Chrome打开查看headers部分,获取User-Agent信息
(3) 使用PyCharm编写代码
(4) 使用git推送到github的仓库

2. 设计实现

  总共编写了1个类,2个函数。一个函数ziye()实现获取文章标题和链接,另一个函数zhuye()实现获取收藏夹的名称并传送拼接好的url给ziye(),然后主函数(main)调用zhuye()函数,实现效果

3. 代码说明

(1) zhuye()函数获取收藏夹的名称并传送url

    name=re.findall(r'"noreferrer noopener">(.*?)</a>',res.text)    #正则切割
    href=re.findall(r'href="/collection(.*?)"',res.text)            #正则切割
    for i in range(0,len(name)):
        print("收藏夹:"+name[i])
        url2 = 'https://www.zhihu.com/api/v4/collections'           #网页头
        url2=url2+href[i]+'/items?offset=0&limit=20'                #组成新网址
        ziye(url2)

(2) ziye()实现获取文章标题和链接

    res = requests.get(url2, headers=head)
        strs = re.findall(r'NORMAL",(.*?)","question', res.text)    #正则切割
        for i in range(0,len(strs)):
            url=re.findall(r'rl":"(.*?)","created_time',strs[i])    #正则切割
            title = re.findall(r'title":"(.*)', strs[i])
            print(title+url)

(3) git提交仓库代码

git init -b main
git remote add origin "https://github.com/fengdufan/homework02.git"
git pull "https://github.com/fengdufan/homework02.git" main
git config user.name "fengdufan"
git config user.email "2316896823@qq.com"
git add *
git commit -m "实时监控朴朴商品价格"
git push origin main

4.运行效果

(1) 获取User-Agent信息



(2)效果图



(3)git提交github效果图


4.后续完善

(1) 不用正则分割,改使用json获取
(2) 爬取的信息存在本地文件

三.【选做】高阶:爬取拉勾网

posted @ 2022-03-13 17:39  枫渡帆  阅读(176)  评论(1编辑  收藏  举报
#navCategory { position: fixed; right: 0; top: 100px; list-style: none; z-index: 99999; } #navCategory > #mylist { position: absolute; background-color: white; width: 32px; left: -32px; font-size: 30px; font-weight: bold; border-radius: 5px; opacity: 0.8; } #navCategory > #myul { background-color: white; height: 400px; width: 230px; padding-top: 5px; overflow: auto; display: none; } #navCategory ul, #navCategory li { list-style: none !important; margin: 5px !important; }