当前位置: 首页 > news >正文

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

尾语

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

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

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

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

相关文章:

  • XML Web 服务 Eclipse实现中的sun-jaxws.xml文件
  • Mac 本地部署thinkphp8【部署环境以及下载thinkphp】
  • txt2xml
  • DNS服务器典型配置
  • 算法模板题记录
  • Python万圣节礼物
  • LeetCode 2656. K 个元素的最大和:一次遍历(附Python一行版代码)
  • 【Pytorch和深度学习】栏目导读
  • Oneid方案
  • 《深入浅出.NET框架设计与实现》阅读笔记(四)
  • SOLIDWORKS Flow Simulation阀门内流体仿真
  • 基于乌鸦算法优化概率神经网络PNN的分类预测 - 附代码
  • 软件测试不是所有人都适合的
  • 腾讯云标准型SA4服务器AMD处理器性能测评
  • vue中实现图片懒加载的几种方法
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Babel配置的不完全指南
  • Linux快速复制或删除大量小文件
  • linux学习笔记
  • Markdown 语法简单说明
  • python学习笔记-类对象的信息
  • 复杂数据处理
  • 前端技术周刊 2019-02-11 Serverless
  • 如何合理的规划jvm性能调优
  • 如何胜任知名企业的商业数据分析师?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 通过git安装npm私有模块
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 自定义函数
  • 仓管云——企业云erp功能有哪些?
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (二)斐波那契Fabonacci函数
  • (二)丶RabbitMQ的六大核心
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (数据结构)顺序表的定义
  • (转载)PyTorch代码规范最佳实践和样式指南
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .NET gRPC 和RESTful简单对比
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • /etc/fstab和/etc/mtab的区别
  • @property括号内属性讲解
  • [\u4e00-\u9fa5] //匹配中文字符
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [C++]拼图游戏
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • [emacs] CUA的矩形块操作很给力啊