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

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

环境使用 :

  • Python 3.8

  • Pycharm

  • nodejs

模块使用:

  • requests --> pip install requests

  • execjs --> pip install PyExecJS

  • csv

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

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

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

    • 打开开发者工具: F12

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

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

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

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

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

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

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

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

采集数据代码

"""导入模块"""

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

"""保存数据"""

dart 复制代码
'''
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代码文件"""

dart 复制代码
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代码函数 传入参数 通过加密算法生成一段密文

"""
dart 复制代码
'''
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)

"""获取响应数据"""

dart 复制代码
    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)

一个小小的可视化

dart 复制代码
'''
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())

尾语

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

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

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

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

相关推荐
gaolei_eit1 小时前
Vue3项目ES6转ES5,兼容低版本的硬件设备,React也
javascript·react.js·es6
一位搞嵌入式的 genius1 小时前
从 ES6 到 ESNext:JavaScript 现代语法全解析(含编译工具与实战)
前端·javascript·ecmascript·es6
子兮曰7 小时前
OpenClaw架构揭秘:178k stars的个人AI助手如何用Gateway模式统一控制12+通讯频道
前端·javascript·github
冷雨夜中漫步7 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
郝学胜-神的一滴8 小时前
深入解析Python字典的继承关系:从abc模块看设计之美
网络·数据结构·python·程序人生
百锦再8 小时前
Reactive编程入门:Project Reactor 深度指南
前端·javascript·python·react.js·django·前端框架·reactjs
百锦再8 小时前
React编程高级主题:测试代码
android·前端·javascript·react.js·前端框架·reactjs
颜酱9 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919109 小时前
C++代码风格检查工具
开发语言·c++·算法
喵手9 小时前
Python爬虫实战:旅游数据采集实战 - 携程&去哪儿酒店机票价格监控完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集结果csv导出·旅游数据采集·携程/去哪儿酒店机票价格监控