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

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

环境使用 :

  • 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())

尾语

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Oracle(14) Managing Password Security and Resources

目录 一、基础知识 1、Profiles 配置文件 2、Password Management 密码管理 3、Enabling Password Mgmt 启用密码管理 4、Password Verification 密码验证 ​编辑5、User-Provided Passwd Func 用户提供的密码功能 6、Verif Func: VERIFY_FUNCTION验证函数介绍 7、Reso…

GX Works2安装引导程序报错“无法安装以下功能: .net framework 3.5 包括 net 2.0 和 3.0”解决方法。

部分电脑在安装GX Works2软件时&#xff0c;会出现如题目的报错问题&#xff0c;以下是解决办法&#xff1a; 可以通过 Windows 控制面板启用 .NET Framework 3.5。 此选项需要 Internet 连接。 按键盘上的 Windows 键&#xff0c;键入“Windows 功能”&#xff0c;然后按 Ent…

CoRL 2023 获奖论文公布,manipulation、强化学习等主题成热门

今年大模型及具身智能领域有了非常多的突破性进展&#xff0c;作为机器人学与机器学习交叉领域的全球顶级学术会议之一&#xff0c;CoRL也得到了更多的关注。 CoRL 是面向机器人学习的顶会&#xff0c;涵盖机器人学、机器学习和控制等多个主题&#xff0c;包括理论与应用。今年…

小米路由器4A千兆版刷入OpenWRT并远程访问

小米路由器4A千兆版刷入OpenWRT并远程访问 文章目录 小米路由器4A千兆版刷入OpenWRT并远程访问前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理…

2012年7月11日 Go生态洞察:Gccgo在GCC 4.7.1中的集成

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

设计模式之解释器模式

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概5000多字&#xff0c;预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…

GEE20:获取地面站点的遥感图层的采样值

获取采样点值 1. 介绍2. GEE实现2.1 数据介绍2.2 GEE code 3.参考 1. 介绍 去年由于实验需要&#xff0c;想通过GEE获取遥感图层的采样值&#xff0c;但是多次尝试后任无法实现。最近通过查询&#xff0c;终于找到的获取采样点的方法&#xff0c;现在将其记录在此&#xff0c;并…

《视觉SLAM十四讲》-- 视觉里程计2

文章目录 07 视觉里程计 27.1 直接法的引出7.2 2D 光流7.2.1 Lucas-Kanade 光流7.2.1 实践&#xff1a;LK 光流 7.3 直接法7.3.1 推导过程7.3.2 直接法的优缺点 07 视觉里程计 2 7.1 直接法的引出 特征点的缺点&#xff1a; 关键点的提取与描述子的计算非常耗时&#xff0c;实…

辐射骚扰整改思路及方法:对差模电流的影响?|深圳比创达电子EMC

同样的分析可以应用在差模电流的情况&#xff0c;唯一不同的是&#xff0c;两根导线的磁场分布是相反的&#xff0c;磁场互相抵消&#xff0c;由于导线中的电流大小相等&#xff0c;产生的磁场H大小相同&#xff0c;在互相靠近的情况下&#xff0c;在磁环内的两个感应磁场大小相…

C盘可以格式化吗?正确答案在这里!

“我一直有个比较好奇的问题&#xff0c;我的电脑中病毒了&#xff0c;我想将c盘进行格式化操作&#xff0c;但是c盘中是有比较多重要文件的&#xff0c;在这种情况下&#xff0c;c盘可以格式化吗&#xff1f;怎么格式化c盘呢&#xff1f;” 面对各种电脑情况&#xff0c;可能不…

Python实现cpu密集型多线程

问题&#xff1a; 想通过以下代码实现多线程 class ThreadTest(threading.Thread):def __init__(self, num, *args, **kwargs):super(ThreadTest, self).__init__(*args, **kwargs)self.num numprint(num)def run(self):print(self.num)print(time.time())if __name__ &quo…

postman连接数据库

参考&#xff1a;https://blog.csdn.net/qq_45572452/article/details/126620210 1、安装node.js 2、配置环境变量 3、安装xmysql连接数据库cmd窗口输入"npm install -g xmysql"后回车cmd窗口输入"xmysql"后回车,验证xmysql是否安装成功(下图代表安装成功)…

编程最佳外挂:批量数据分析与可视化,CodeGeeX工具箱一键完成

ChatGLM3代模型的Code Interpreter能力&#xff0c;本周已经在VSCode里的CodeGeeX插件产品中&#xff0c;以开发者工具箱的产品形态上线。 下图以VSCode插件为例&#xff1a;在CodeGeeX的侧边栏&#xff0c;和智能问答AskCodeGeeX并列出现的工具箱标签&#xff0c;用户登录后就…

区块链拆分

随着区块链技术的发展和普及&#xff0c;去中心化钱包逐渐成为数字货币领域的重要工具。去中心化钱包不仅具有高度安全性和隐私保护能力&#xff0c;还可以通过智能合约和开源技术实现定制化功能。本文将探讨去中心化钱包定制开发的基本概念、优势、流程和前景。 一、去中心化钱…

YOLOv8 营业执照提取 统一社会信用代码、企业名称

目录 背景 尝试一&#xff1a;整图OCR识别&#xff0c;然后正则匹配 尝试二&#xff1a;利用显著特征&#xff0c;直接传统方法定位&#xff0c;切出来识别 尝试三&#xff1a;yolov8训练一个统一社会信用代码、企业名称位置检测 ​编辑 效果 模型信息 项目 ​编辑 代…

(六)Spring源码解析:Spring AOP源码解析

一、AOP概念 Aspect&#xff1a;切面 给业务方法增加到功能&#xff0c;切面泛指交叉业务逻辑。上例中的事务处理、日志处理就可以理解为切面。常用的切面是通知&#xff08;Advice&#xff09;。实际就是对主业务逻辑的一种增强。 Pointcut&#xff1a;切入点 切入点指声明的…

springcloudalibaba入门详细使用教程

目录标题 一、简介二、SpringCloud Alibaba核心组件2-1、Nacos (配置中心与服务注册与发现)2-2、Sentinel (分布式流控)2-3、RocketMQ (消息队列)/RabbitMq/kafka2-4、Seata (分布式事务)2-5、Dubbo (RPC) 三、为什么大家看好 Spring Cloud Alibaba3-1、阿里巴巴强大的技术输出…

【每日一题】307. 区域和检索 - 数组可修改-2023.11.13

题目&#xff1a; 307. 区域和检索 - 数组可修改 给你一个数组 nums &#xff0c;请你完成两类查询。 其中一类查询要求 更新 数组 nums 下标对应的值另一类查询要求返回数组 nums 中索引 left 和索引 right 之间&#xff08; 包含 &#xff09;的nums元素的 和 &#xff0c…

智能井盖传感器具有什么效果?

智能井盖传感器与智慧城市之间有着密切的关联&#xff0c;两者之间属于相辅相成的状态&#xff0c;对于城市的现代化和城市生命线建设有助力作用。智能井盖传感器是其中一个重要的组成环节&#xff0c;它们帮助城市改变原有的生活和生态环境&#xff0c;为政府部门完善城市基础…

【机器学习】 朴素贝叶斯算法:原理、实例应用(文档分类预测)

1. 算法原理 1.1 朴素贝叶斯方法 朴素贝叶斯方法涉及一些概率论知识&#xff0c;我们先来复习一下。 联合概率&#xff1a;包含多个条件&#xff0c;并且所有的条件同时成立的概率&#xff0c;公式为&#xff1a; 条件概率&#xff1a;事件A在另一个事件B已经发生的前提下发…