IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 爬虫实战之华为应用市场 -> 正文阅读

[Python知识库]爬虫实战之华为应用市场

目录

一、需求说明

二、步骤

1、检查当前页面的URL所获得的响应的数据

? ? ? ? ①笨办法——程序验证(不建议)

? ? ? ? ②简单办法——抓包

? ? ? ? ③验证(抓包,推荐)?

? ? ? ? ④动态加载验证

? ? ? ? ⑤查找页面的信息

?2、获取排行页面数据

? ? ? ? ?①操作???

? ? ? ? ?②源码

? ? ? ? ?③信息解析

?3、详情页面分析

? ? ? ? ①寻找URL

? ? ? ?②验证URL

? ? ? ? ?③获取URL

? ? ? ? ?④获取内容

三、源码


一、需求说明

? ? ? ? 爬取华为应用市场排行页面下的APP的详情页

二、步骤

1、检查当前页面的URL所获得的响应的数据

? ? ? ? ①笨办法——程序验证(不建议)

? ? ? ? ? ? ? ? 将URL复制到python环境中,通过requests的四步去得到其相应的内容

? ? ? ? ②简单办法——抓包

? ? ? ? ? ? ? ? 通过检查页面找到当前页的相应内容,然后检查里面的内容是否是想要的

? ? ? ? ? ? ? ? 先在页面点鼠标右键,然后选项的最下面就是检查了,然后进行如下操作

? ? ? ? ③验证(抓包,推荐)?

?

? ? ? ? ?根据结果显示,通过URL得到的内容不是页面所呈现的内容,做出可能是ajax的动态加载

? ? ? ? ④动态加载验证

? ? ? ? ⑤查找页面的信息

????????通过上一步的验证发现,其得到的内容并不是页面的内容,所以加下来要继续查找;

? ? ? ? 查找方向为全部的响应信息

?2、获取排行页面数据

? ? ? ? ?①操作??

?

? ? ? ? ?②源码

import requests
import json
if __name__ == '__main__':
    url = 'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&uri=1ca1964fe0c343cbab12f94d6dc5ef7e&maxResults=25&zone=&locale=zh'
    headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
        }

    '''
    https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&maxResults=25&uri=app|C5683&shareTo=&currentUrl=https%3A%2F%2Fappstore.huawei.com%2Fapp%2FC5683&accessId=&appid=C5683&zone=&locale=zh
   https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&maxResults=25&uri=app|C10652857&shareTo=&currentUrl=https%3A%2F%2Fappstore.huawei.com%2Fapp%2FC10652857&accessId=&appid=C10652857&zone=&locale=zh
    '''
    id_list = []
    response = requests.get(url=url,headers=headers).json()
    print(response)

? ? ? ? ?③信息解析

?3、详情页面分析

? ? ? ? ①寻找URL

? ? ? ? 重复上面的步骤去检查详情页的情况,找到所需要的数据,然后通过对比URL寻找规律,发现有一个编码是不一样的,而此编码保存在上一个页面的获取到的信息中(可以通过将获取到的数据保存到json文件中,然后通过快捷键去查找)

?

? ? ? ?②验证URL

????????观察URL发现得到的区别是处在一大串的字符串中,也就是说无法将其分化出来;此时要进行的一个操作就是将区别后面的一长串字符串进行删除之后,然后将其拿到浏览器去验证跟删除前得到的页面是否一致;

? ? ? ? 通过验证发现是一样的,也就是说后面的数据是可有可无的,所以页面的URL就是基础的字符串拼接上ID

? ? ? ? ?③获取URL

? ? ? ? 在知道了其结构之后,现在的需求就是获取ID的值了,而ID的值在排行页面获取到的数据中;

? ? ? ? 而排行页面获取到数据是字典的格式,所以接下来就是遍历字典,获得想要的值

? ? ? ? ?④获取内容

? ? ? ? 得到URL之后,就按照爬取页面的四部曲去获得内容了,四部曲详情可以查看上篇文章

三、源码

# -*- coding: utf-8 -*-
import requests
import json
if __name__ == '__main__':
    url = 'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&uri=1ca1964fe0c343cbab12f94d6dc5ef7e&maxResults=25&zone=&locale=zh'
    headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
        }
    params = {
        'access-control-allow-credentials': 'true',
        'access-control-allow-origin': 'https://appstore.huawei.com',
        'Access-Control-Expose-Headers': 'session-valid',
        'Cache-Control': 'no-store',
        'Connection': 'keep-alive',
        'content-encoding': 'gzip',
        'Content-Type': 'application/json',
        'Date': 'Thu, 19 May 2022 12:31:17 GMT',
        'Pragma': 'no-cache',
        'Server': 'elb',
        'Transfer-Encoding': 'chunked',
        'X-Content-Type-Options': 'nosniff',
        'X-XSS-Protection': '1',
    }
    '''
    https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&maxResults=25&uri=app|C5683&shareTo=&currentUrl=https%3A%2F%2Fappstore.huawei.com%2Fapp%2FC5683&accessId=&appid=C5683&zone=&locale=zh
   https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&maxResults=25&uri=app|C10652857&shareTo=&currentUrl=https%3A%2F%2Fappstore.huawei.com%2Fapp%2FC10652857&accessId=&appid=C10652857&zone=&locale=zh
    '''
    id_list = []
    response = requests.get(url=url,params=params,headers=headers).json()
    for dic in response['layoutData']:
        for id in dic['dataList']:
            id_list.append(id['appid'])
    detail_url = 'https://web-drcn.hispace.dbankcloud.cn/uowap/index?method=internal.getTabDetail&serviceType=20&reqPageNum=1&maxResults=25&uri=app|'
    all_content = []
    for id in id_list:
        url_new = detail_url + id
        content = requests.get(url=url_new,headers=headers).json()
        all_content.append(content)
    fp = open('./content.json','w',encoding='utf-8')
    json.dump(all_content,fp=fp,ensure_ascii=False)
    print('over')

具体分析和思路详解见上篇博客

CSDNhttps://mp.csdn.net/mp_blog/creation/editor/124869764

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-27 17:17:41  更:2022-05-27 17:18:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:58:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码