• 我用Python爬完一页又一页,只因这个网站小姐姐视频太迷人!


    首先澄清一下,我用Python收集这些视频,绝不是想做别的什么,真的只是用来做动态壁纸,大家不要误会!我不是那样的人~

    这样的不过份吧

    在这里插入图片描述

    阅读本文你需要准备

    1、环境

    Python
    pycharm
    
    # 我还给大家准备了大量的学习资料和教程,都在这个群了
    # Python学习交流群 279199867
    # 还有大佬不定期解答问题,同千人一起进步~

    2、模块使用

    requests  

    requests 需要手动安装一下 ,win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)

    re
    json

    这两个是内置模块,不需要安装,Python环境安装好就可以了。

    3、关于模块安装失败

    如何安装python第三方模块:

    1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
    2. 在pycharm中点击Terminal(终端) 输入安装命令

    安装失败原因:

    • 失败一: pip 不是内部命令
      解决方法: 设置环境变量

    • 失败二: 出现大量报红 (read time out)
      解决方法: 因为是网络链接超时, 需要切换镜像源。

     清华:https://pypi.tuna.tsinghua.edu.cn/simple
     阿里云:https://mirrors.aliyun.com/pypi/simple/
     中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
     华中理工大学:https://pypi.hustunique.com/
     山东理工大学:https://pypi.sdutlinux.org/
     豆瓣:https://pypi.douban.com/simple/
    

    例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名

    • 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入
      解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好。
      或者你pycharm里面python解释器没有设置好

    4、配置pycharm里面的python解释器

    1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
    2. 点击齿轮, 选择add
    3. 添加python安装路径

    5、Python想要兼职接外包应该学习什么?

    外包是什么? 是指别人花钱请你帮他写程序, 根据甲方的需求定制化开发程序软件, 从而获得一定报酬。

    目前关于爬虫+数据分析外包相对而言会多一些。

    比如:

    • 学生的毕设 / 课设 / 作业、个人商家需要的一些数据采集、某人公司需要的某些数据等等;
    • 采集疫情数据做可视化分析 / 采集房源数据做可视化分析 / 采集招聘网站做可视化分析 / 采集电商平台做可视化分析 等等

    这些是普遍存在的外包需求

    根据外包的需求以及难易程序 外包的收费情况也是不一样的, 按照分布计算。

    • 简单的外包: 100-300左右 耗时: 30-60分钟左右
    • 中等的外包: 500+ 左右 耗时: 1-2个小时左右
    • 难度稍大外包: 价格 1000+ 不封顶等 耗时: 3-5天不等

    爬虫和数据分析外包 一般情况写外包的周期相对而言会比较多短

    网站开发的外包难度以及耗时相当而言会大一些,比如开发后台数据管理系统 / 某公司企业官网 / 或者学生毕设等等,但是价格相对而言都是比较高的,网站开发价格普通是上千。

    6、Python找工作就业方向以及薪资待遇情况

    Python找工作方向主要是

    • 开发工程师 <网站开发/全栈开发>
      北京平均薪资23K
      应届生15K
      1-3年 16.9K
      3-5年22.9K

    • 爬虫工程师
      北京平均薪资22.5K
      应届生16.7K
      1-3年 18.1K
      3-5年 24K

    • 数据分析师
      北京平均薪资25.3K
      应届生13.5K
      1-3年 19.4K
      3-5年26.2K

    以上数据来源于科大招聘网站

    常用p虫通用模板

    • 一. 数据来源分析

    采集数据内容, 要知道我们想要内容是来自哪里
    <开发者工具进行抓包分析>

        I. F12打开打开发者工具
        II. 刷新网页 让数据重新加载一遍
        III. 这个网站是一个m3u8视频内容
    

    正常情况, 一个视频完整的内容
    m3u8视频内容 会整个完整视频内容,分割成很多个小视频片段 <ts文件> 一个ts文件 可能只有几秒钟的时间
    所以我们得去找一个文件内容 <m3u8文件> 包含我们所有ts文件内容 <所有视频片段>
    最好的搜索方式, 是根据ts文件url去搜索m3u8文件

    请求获取网页源代码 就可以得到m3u8文件 >>> 所有视频片段就得到了 >>> 合成为一个整体的视频内容

    • 二. 代码实现步骤: <基本四大步骤>
    1. 发送请求, 对于视频播放详情页url地址发送请求
    2. 获取数据, 获取网页源代码 <获取服务器返回response响应数据>
    3. 解析数据, 提取我们想要数据内容 <m3u8文件>
    4. 发送请求, 对于m3u8文件url发送请求
    5. 获取数据, 获取服务器返回response响应数据
    6. 解析数据, 提取所有ts文件内容 <视频片段url>
    7. 保存数据, 保存视频内容到本地
    8. 多个视频采集
    9. 多页数据采集
    10. 根据关键词视频下载
    11. 根据关键词视频下载

    代码部分

    import time
    import requests  # 数据请求模块
    import re  # 正则表达式模块
    import json
    import pprint
    
    for page in range(3, 29):
        print(f'正在采集第{page}页的数据')
        time.sleep(1)
        link = 'https://www.acfun.cn/u/29946310'
        data = {
            'quickViewId': 'ac-space-video-list',
            'reqID': page+1,
            'ajaxpipe': '1',
            'type': 'video',
            'order': 'newest',
            'page': page,
            'pageSize': '20',
            't': '1653659024877',
        }
        headers = {
            'referer': 'https://acfun/u/29946310',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
        }
        response = requests.get(url=link, params=data, headers=headers)
        # pprint.pprint(response.text)
        ac_id_list = re.findall('atomid.*?:.*?"(\d+).*?"', response.text)
        print(ac_id_list)
    
    
        for ac_id in ac_id_list:
            url = f'https://acfun/v/ac{ac_id}'
            headers = {
                'referer': f'https://acfun/u/{ac_id}',
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
            }
            response = requests.get(url=url, headers=headers)
            title = re.findall('<title >(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ</title>', response.text)[0]
            html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]
            json_data = json.loads(html_data)
            m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
            m3u8_data = requests.get(url=m3u8_url, headers=headers).text
            m3u8_data = re.sub('#E.*', '', m3u8_data).split()
            print(title)
            print(m3u8_url)

    兄弟们快去试试吧!

    在这里插入图片描述

  • 相关阅读:
    Integer和Integer常量池
    Spring中常用的23中设计模式
    GitHub 简单教程
    IDEA 中用好 Lombok,撸码效率至少提升5倍!
    Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
    ROS常用命令和VIM常用命令
    ROS运行
    VINS-Mono运行
    环境配置相关
    C89标准和C99标准C11标准的区别
  • 原文地址:https://www.cnblogs.com/hahaa/p/16383420.html
Copyright © 2020-2023  润新知