劲爆美女来袭,这不得用python高清保存防止她被封禁

前言

大家早好、午好、晚好吖 ❤ ~


环境使用:

  • Python 3.8 解释器

  • Pycharm 编辑器


模块使用:

  • requests

    数据请求 第三方模块 pip install requests <工具>

  • re

    <正则表达式模块>


安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令


如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

  2. 点击齿轮, 选择add

  3. 添加python安装路径


pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

  3. 选择相应的插件点击 install(安装) 即可

  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效


基本思路流程:

一. 数据来源分析:

  1. 明确需求:

    • 采集网站是什么?

    • 采集数据是什么?

      • 视频内容

      • 视频标题

  2. 分析 视频内容 在什么地方

    • 通过开发者工具进行抓包分析:

      I. 打开开发者工具: F12 或者 鼠标右键点击检查选择network

      II. 刷新网页

      III. 在开发者工具当中, 搜索 m3u8 --> 找到一个数据包 getMomentContent

二. 代码实现步骤

  1. 发送请求, 模拟浏览器对于url地址发送请求

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

    开发者工具: response

  3. 解析数据, 提取我们想要的数据内容

    • 视频标题

    • 视频播放链接

  4. 保存数据, 把视频内容保存本地文件夹


代码展示

导入模块

# 导入数据请求模块 --> 第三方模块 需要安装 pip install requests
import requests
# 导入格式化输出模块 --> 内置模块 不需要安装
from pprint import pprint
# 导入正则表达式 --> 内置模块 不需要安装
import re

1. 发送请求, 模拟浏览器对于url地址发送请求

  • 安装模块 win + R 输入cmd 在输入安装命令

  • 把爬虫代码伪装成浏览器去发送请求 请求头

    目的: 为了防止被反爬

    对于某些网站, 如果不加headers请求头, 你请求链接可能得不到数据

劲爆美女来袭,这不得用python高清保存防止她被封禁_第1张图片

PS:完整源码如有需要的小伙伴可以加下方的群去找管理员免费领取

for page in range(3, 501):
    print(f'=================正在采集第{page}页的数据内容=================')

视频列表页面

伪装模拟 --> 字典数据类型

    headers = {
        # user-agent 用户代理 表示浏览器基本身份信息
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }

发送请求

    html_data = requests.get(url=link, headers=headers).text

“”"

解析数据, 提取我们想要视频ID

.*? 表示任意字符

\d+ 表示匹配0个/多个数字

“”"

    video_id_list = re.findall('<li data-vid="(\d+)">', html_data)
    for video_id in video_id_list:

确定请求链接 --> 字符串

伪装模拟 --> 字典数据类型

        headers = {
            # user-agent 用户代理 表示浏览器基本身份信息
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
        }

发送请求

        response = requests.get(url=url, headers=headers)

响应对象, 表示请求成功

        print(response)

“”"
2. 获取数据, 获取服务器返回响应数据

开发者工具: response

爬虫常见报错

response.json(): 获取响应字典数据

requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

原因: 返回数据不是完整json数据格式

解决方法

  1. 先获取响应文本数据, 查看数据返回效果

    jQuery112405799477739825281_1672143376828({})

  2. 删除掉, 请求链接里面一段参数callback, 再获取 response.json()

    print(response.json()) 返回一行数据

    pprint(response.json()) 返回多行数据, 展开的效果

字典取值:

键值对 --> 根据冒号左边的内容[键], 提取冒号右边的内容[值]

“”"

提取标题

        title = response.json()['data']['moment']['title']
        new_title = re.sub(r'[/\*:"<>?|\n]', '', title)

提取视频链接

        video_url = response.json()['data']['moment']['videoInfo']['definitions'][0]['url']

“”"

4. 保存数据

需要对于视频播放链接发送请求, 然后获取二进制数据内容

response.content —> 获取响应二进制数据

保存 图片/视频/音频/特定格式的文件 都是获取二进制数据, 然后保存的

“”"

        video_content = requests.get(url=video_url, headers=headers).content
        with open('video\\' + new_title + '.mp4', mode='wb') as f:
            f.write(video_content)
        print(title, video_url)

效果展示

劲爆美女来袭,这不得用python高清保存防止她被封禁_第2张图片

劲爆美女来袭,这不得用python高清保存防止她被封禁_第3张图片

劲爆美女来袭,这不得用python高清保存防止她被封禁_第4张图片

劲爆美女来袭,这不得用python高清保存防止她被封禁_第5张图片
劲爆美女来袭,这不得用python高清保存防止她被封禁_第6张图片
劲爆美女来袭,这不得用python高清保存防止她被封禁_第7张图片

劲爆美女来袭,这不得用python高清保存防止她被封禁_第8张图片

尾语

好了,今天的分享就差不多到这里了!

完整代码、视频讲解、疑惑解答直接点击下方名片自取即可。

宁外给大家推荐一个好的教程:

【48小时搞定全套教程!你和大佬只有一步之遥【python教程】

有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

你可能感兴趣的:(爬虫小案例,python,pycharm,学习)