python爬虫(二) ---- JS动态渲染数据抓取

python爬虫之JS动态渲染数据抓取

一、环境准备

  • 练习地址: https://spa1.scrape.center/page/1

  • requests:发出请求

  • pandas:保存数据到 csv文件

  • 依赖安装命令:

    powershell 复制代码
    pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

二、爬取思路

  • JS动态渲染的数据是前后端分离的, 直接通过地址无法获取到具体的数据, 需要找到数据返回的api, 然后通过requests请求api拿到数据(一般为json数据), 最后进行解析获取想要的内容
  • 在浏览器开发者模式中, 选中 网络 -> Fetch/XHR, 找到api, 如下图所示:
  • 分析这个json结构, 解析出需要的内容

三、代码示例

python 复制代码
import requests
import pandas as pd


def request(url):
    r = requests.get(url);
    return r.json();


def parseJson(json_data):
    movie_list = []
    results = json_data['results']
    for result in results:
        movie_info = {'name': f"{result['name']} - {result['alias']}",
                      'categories': ','.join(result['categories']),
                      'location': ','.join(result['regions']),
                      'duration': result['minute'],
                      'release_date': result['published_at'],
                      'score': result['score']}
        movie_list.append(movie_info)
    return movie_list


def save(data):
    df = pd.DataFrame(data);
    # 设置表头
    df.columns = ['电影名', '类型', '地域', '时长', '上映时间', '评分'];
    df.to_csv("data_js.csv", index=False, encoding='utf-8-sig');


if __name__ == '__main__':
    # 发出请求
    jsonData = request('https://spa1.scrape.center/api/movie/?limit=10&offset=0')
    print(f'获取jsonData成功..')

    # 解析json
    movie_list = parseJson(jsonData);
    print('解析json成功..')

    # 存储数据
    save(movie_list)
    print('写入文件成功...')

四、结果展示

相关推荐
问天_观心18 小时前
大模型微调学习(二)
人工智能·python·深度学习·学习·语言模型·transformer
洋洋不叫杨杨18 小时前
揭秘当下知名的SEO优化渠道,你知道几个?
大数据·python
阿童木写作18 小时前
跨境图片翻译工具推荐:批量处理视频字幕与智能抠图
python·音视频
平头哥技术团队18 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
梦想的颜色18 小时前
OCR 识别原理与 Python 识图全实战:从文字提取到图像内容理解
python·计算机视觉·ocr·图像识别·python 识图
禹凕18 小时前
Dijkstra算法详解与应用
python·算法
yume_sibai19 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
别走!万哥爱你19 小时前
Python 中可以用于在已排序的列表中查找特定元素的位置的是什么?
python
该逃避避19 小时前
爬虫代理配置指南:从0搭建Crawl4AI网页爬虫教程
爬虫
wxwx_bscxy32220 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite