Python采集某网站数据实现简单可视化效果, webpack Js逆向解密

news2024/9/20 18:48:20

嗨喽,大家好呀~这里是爱看美女的茜茜呐

环境使用 :

  • Python 3.8

  • Pycharm

  • nodejs

模块使用:

  • requests --> pip install requests

  • execjs --> pip install PyExecJS

  • csv

采集网站的数据如何去实现:

一. 数据来源分析 <√>
  1. 明确需求: 明确采集的网址以及数据内容

    • 网址: https://spa2.scrape.center/page/1

    • 数据: 影视信息

  2. 抓包分析: 分析数据具体所在位置

    • 打开开发者工具: F12

    • 刷新网页 <点击第二页>

    • 通过关键字去搜索找到对应的数据

      • 关键字 你想要获取的数据

    数据包地址: https://spa2.scrape.center/api/movie/?limit=10&offset=10&token=YjZjMjRiZTU3YWQzZTZjNjI1NDg0ODFhZDg5MGNhOGYwYmU4MGVmMiwxNjk5NzA0NTc3

二. 代码实现步骤
  1. 发送请求 -> 模拟浏览器对于url地址发送请求

  2. 获取数据 -> 获取服务器返回响应数据

  3. 解析数据 -> 提取具体数据内容

  4. 保存数据 -> 保存表格文件中

采集数据代码

“”“导入模块”“”

# 导入数据请求模块 <需要安装>
import requests
# 导入执行JS代码模块 <需要安装>
import execjs
# 导入csv模块
import csv

“”“保存数据”“”

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
csv_file = open('data.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(csv_file, fieldnames=[
    '中文名',
    '英文名',
    '评分',
    '时长',
    '类型',
    '国家',
    '上映时间',
])
csv_writer.writeheader()

“”“读取JS代码文件”“”

f = open('demo-1.js', encoding='utf-8').read()
# 编译JS代码
js_code = execjs.compile(f)
for page in range(0, 91, 10):
    data = "/api/movie"
    # 调用JS代码函数
    token = js_code.call('i', data, page)
"""
1. 发送请求 -> 模拟浏览器对于url地址发送请求
    安装模块:
        - win + R 输入cmd 输入安装命令 pip install 模块名
发送请求之后, 没有得到数据:
    1. 请求网址问题
        网址中一个参数 token参数是加密的...
    2. 被反爬了

分析token参数是如何生成的: JS逆向
    通过JS代码函数 传入参数 通过加密算法生成一段密文

"""
'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
    # 模拟浏览器 <headers请求头: 字典接收数据构建完整键值对>
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    }
    # 请求网址
    url = f'https://spa2.scrape.center/api/movie/?limit=10&offset={page}&token={token}'
    # 发送请求
    response = requests.get(url=url, headers=headers)

“”“获取响应数据”“”

    json_data = response.json()
    # for循环遍历, 提取列表里面的元素
    for index in json_data['results']:
        dit = {
            '中文名': index['name'],
            '英文名': index['alias'],
            '评分': index['score'],
            '时长': index['minute'],
            '类型': ','.join(index['categories']),
            '国家': ','.join(index['regions']),
            '上映时间': index['published_at'],
        }
        csv_writer.writerow(dit)
        print(dit)

一个小小的可视化

'''
python资料获取看这里噢!! 小编 V:Pytho8987(记得好友验证备注:6 否则可能不通过)
即可获取:文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
import pandas as pd
# 读取文件
df = pd.read_csv('data.csv')
print(df.head())
# https://gallery.pyecharts.org/#/README 可视化官方文档

# 导入配置项
from pyecharts import options as opts
# 导入饼图
from pyecharts.charts import Pie
# 随机生成数据
from pyecharts.faker import Faker
info = df['评分'].value_counts().index.to_list()
num = df['评分'].value_counts().to_list()
c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(info,num)
        ],
        center=["40%", "50%"],
    )
    .set_global_opts(
        # 设置标题
        title_opts=opts.TitleOpts(title="电影评分分布图"),
        legend_opts=opts.LegendOpts(type_="scroll", pos_left="80%", orient="vertical"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    # 保存可视化html文件
    .render("评分.html")
)

# ['草莓', '芒果', '葡萄', '雪梨', '西瓜', '柠檬', '车厘子'] 数据类目
print(Faker.choose())
# [37, 75, 29, 90, 140, 139, 131] 数据数量
print(Faker.values())

尾语

感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1202913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【原创】java+swing+mysql办公用品管理系统设计与实现

摘要&#xff1a; 办公用品管理系统是一个设计和实现办公用品库存和使用管理的信息系统。此系统可以提高办公用品的利用率&#xff0c;减少浪费&#xff0c;使办公用品管理更加高效、规范、便捷。本文主要介绍使用javaswingmysql技术去开发实现一个办公用品管理系统。 功能分…

约束条件的安全测试_报错注入

约束条件的安全测试_报错注入 基于约束的SQL攻击 报错注入

ros2_control的简单应用

文章目录 简介插件实现函数介绍代码 调用原理局限性 简介 在利用moveit_setup_assistant配置我们自己机械手后&#xff0c;当运行demo.launch.py时&#xff0c;会实例化一个moveit对象以及一个基于ros2_control的、虚拟的控制对象&#xff0c;从而可以实现一个完整的控制闭环。…

简单实现,在nodejs中简单使用kafka

什么是 Kafka Kafka 是由 Linkedin 公司开发的&#xff0c;它是一个分布式的&#xff0c;支持多分区、多副本&#xff0c;基于 Zookeeper 的分布式消息流平台&#xff0c;它同时也是一款开源的基于发布订阅模式的消息引擎系统。 Kafka 的基本术语 消息&#xff1a;Kafka 中的…

【源码复现】图神经网络之PPNP/APPNH

目录 1、论文简介2、论文核心介绍2.1、现有方法局限2.2、PageRank&Personalized PageRank2.3、PPNP&APPNP 3、源码复现3.1、模型总体框架3.2、PPNP3.3、APPNP3.4、MLP(两层) 1、论文简介 论文题目——《PREDICT THEN PROPAGATE: GRAPH NEURAL NETWORKS MEET PERSONALI…

期中之后老师的福音

老师在期中考试后总是会有一大堆事情要做&#xff0c;批改试卷、统计分数、通知学生成绩等等。今天我就要给大家介绍一个能够减轻老师工作负担、提高工作效率的方法——查询系统 简单来说&#xff0c;成绩查询系统就是能够让学生方便的查询成绩&#xff0c;让老师快捷发布成绩的…

iText v1.8.1(OCR截图文字识别工具)

iText for mac是一款OCR&#xff08;光学字符识别&#xff09;工具&#xff0c;可以从图片中识别文字&#xff0c;适用于从扫描版的PDF等任意图片中提取文字。 使用iText&#xff0c;您可以方便快捷地从图片中摘抄和批注文字&#xff0c;满足您的各种需求。其自带截图功能&…

vscode 快速打印console.log

第一步 输入这些 {// Print Selected Variabl 为自定义快捷键中需要使用的name&#xff0c;可以自行修改"Print Selected Variable": {"body": ["\nconsole.log("," %c $CLIPBOARD: ,"," background-color: #3756d4; padding:…

11.10 知识总结(数据的增删改查、如何创建表关系、Django框架的请求生命周期流程图)

一、 数据的增删改查 1.1 用户列表的展示 把数据表中得用户数据都给查询出来展示在页面上 添加数据 id username password gender age action 修改 删除 1.2 修…

9 个可以免费检索意外删除或丢失的文件的专业数据恢复软件

今天&#xff0c;我们将探索一些最佳数据恢复软件&#xff0c;它们可以帮助您从 Windows PC 或存储设备中检索意外删除或丢失的文件&#xff01; 丢失数据或意外删除数据是一种令人不安的经历。值得庆幸的是&#xff0c;存在有效的解决方案来解决这种情况。今天&#xff0c;我…

从0到0.01入门React | 002.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

如何解决错误代码0x80070422,多种修复0x80070422的方法

在使用Windows系统&#xff0c;特别是Windows Update更新你的系统时&#xff0c;可能会遇到错误代码0x80070422。这是一个相对常见的问题&#xff0c;但不用担心&#xff0c;这个问题大多数情况下可以通过一些简单的步骤进行修复。 一.为什么会出现错误0x80070422 错误代码0x8…

本地生活直播的下个红利期来了!虚拟直播遇上本地生活擦出新火花

近年来&#xff0c;本地生活直播发展迅猛&#xff0c;作为一种全新的线下实体店营销方式&#xff0c;它比电商直播更贴近消费者的生活需求。比如消费者通过直播购买套餐或消费券&#xff0c;并在实体店核销。这种情况就可以归属于本地生活直播的服务范围。因此&#xff0c;对于…

Linux ____03、文件类型、属性、修改文件属性(更改文件权限)(命令)

文件类型、属性、修改文件属性 一、文件类型二、文件属性三、修改文件属性1、chgrp&#xff1a;更改文件属组2、chown&#xff1a;更改文件属主&#xff0c;也可以同时更改文件属组3、chmod&#xff1a;更改文件9个属性————————如觉不错&#xff0c;随手点赞&#xff…

Ansys Electronics Desktop仿真——HFSS线圈寄生电阻,电感

利用ANSYS Electronics Desktop&#xff0c;可在综合全面、易于使用的设计平台中集成严格的电磁场分析和系统电路仿真。按需求解器技术让您能集成电磁场仿真器和电路及系统级仿真&#xff0c;以探索完整的系统性能。 HFSS&#xff08;High Frequency Structure Simulator&#…

上门洗衣洗鞋app小程序

上门洗衣洗鞋app小程序作为专业的帮助用户洗衣服务的软件,许多朋友都使用过。在这里,小编就帮助大家收集一些非常不错的洗衣洗鞋软件。 不知道大家是否还在为洗衣而烦恼,而怕麻烦,现在大家都在用网上的洗衣洗鞋小程序来洗衣服,用户只需要打开手机软件,发起订单,门店即可收到订单…

[CANN训练营]UART通信笔记

文章目录 前言一、前提知识1.串行通信2.并行通信3.单工、半双工、全双工通信3.1单工通信3.2半双工通信3.3全双工通信 4.补充&#xff1a;通信速率 二、UART通信1.UART通信2.UART工作原理 总结 前言 在ROS学习中&#xff0c;我们在入门基础除了ROS的小乌龟外&#xff0c;在通信…

2019年五一杯数学建模A题让标枪飞解题全过程文档及程序

2020年五一杯数学建模 A题 让标枪飞 原题再现 标枪的投掷是一项历史悠久的田径比赛项目。标枪投掷距离的远近受到运动员水平&#xff08;出手速度、出手角、初始攻角、出手高度、出手时标枪的初始俯仰角速度等&#xff09;&#xff0c;标枪的技术参数&#xff08;标枪的长度、…

Docker的本地镜像发布到阿里云或者私有库步骤

学习笔记来源Docker 本地镜像发布到阿里云 1、生成镜像&#xff08;使用commit命令&#xff09; 创建阿里云仓库镜像 阿里云开发者平台 https://promotion.aliyun.com/ntms/act/kubernetes.html 创建仓库镜像 选择控制台&#xff0c;进入容器镜像服务 选择个人实例 命名空…