大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频

这篇具有很好参考价值的文章主要介绍了大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是辣条。

现在短视频可谓是一骑绝尘,吃饭的时候、休息的时候、躺在床上都在刷短视频,今天给大家带来python爬虫进阶 :美拍视频地址加密解析。

抓取目标

目标网址:美拍视频
大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频

工具使用

开发环境:win10、python3.7
开发工具:pycharm、Chrome
工具包:requests、xpath、base64

重点学习内容

爬虫采集数据的解析过程
js代码调试技巧
js逆向解析代码
Python代码的转换

项目思路解析

进入到网站的首页
挑选你感兴趣的分类
根据首页地址获取到进入详情页面的超链接的跳转地址
大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频
找到对应加密的视频播放地址数据
大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频
这个数据是静态的网页数据,通过js代码进行解码的
找到对应的解析代码
先找到视频的播放地址
找到解析视频地址的加密js文件
点击播放的时候会触发文件
大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频
大致能看出来这个是base64加密之后的数据
在对应的js文件里搜索关键字
找到js的加密方式
大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频
js函数的一些函数的用法

    # eplace()方法用于在字符串中用一些字符替换另一些字符
    # parseInt 数据转换成对应的整型
    # base64.atob   对base64编码过的字符串进行解码
    # substring 方法可在字符串中抽取从 start 下标开始的指定数目的字符

大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频
将js代码转换成Python代码

import base64

def decode(data):
    def getHex(a):
        return {
            'str': a[4:],
            'hex': ''.join(list(a[:4])[::-1]),
        }

    def getDec(a):
        b = str(int(a, 16))
        return {
            'pre': list(b[:2]),
            'tail': list(b[2:]),
        }

    def substr(a, b):
        c = a[0: int(b[0])]
        d = a[int(b[0]): int(b[0]) + int(b[1])]
        return c + a[int(b[0]):].replace(d, "")

    def getPos(a, b):
        b[0] = len(a) - int(b[0]) - int(b[1])
        return b

    b = getHex(data)
    c = getDec(b['hex'])
    d = substr(b['str'], c['pre'])
    return base64.b64decode(substr(d, getPos(d, c['tail'])))

print(decode("e121Ly9tBrI84RdnZpZGVvMTAubWVpdHVkYXRhLmNvbS82MGJjZDcwNTE3NGZieXBueG5udnRwMTA5N19IMjY0XzFfNWY3YThmM2U0MTEwNy5tc2JVjAu3EDQ="))


得出最终视频播放地址
大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频
大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频

简易源码分享

import requests
from lxml import etree
import base64

def decode_mp4(data):
    def getHex(a):
        return {
            'str': a[4:],
            'hex': ''.join(list(a[:4])[::-1]),
        }

    def getDec(a):
        b = str(int(a, 16))
        return {
            'pre': list(b[:2]),
            'tail': list(b[2:]),
        }

    def substr(a, b):
        c = a[0: int(b[0])]
        d = a[int(b[0]): int(b[0]) + int(b[1])]
        return c + a[int(b[0]):].replace(d, "")

    def getPos(a, b):
        b[0] = len(a) - int(b[0]) - int(b[1])
        return b

    b = getHex(data)
    c = getDec(b['hex'])
    d = substr(b['str'], c['pre'])
    return base64.b64decode(substr(d, getPos(d, c['tail'])))
# 运行主函数
def main():
    url = 'https://www.meipai.com'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
    }
    response = requests.get(url=url, headers=headers)
    html_data = etree.HTML(response.text)
    href_list = html_data.xpath('//div/a/@href')
    # print(href_list)
    for href in href_list:
        res = requests.get('https://www.meipai.com' + href, headers=headers)
        html = etree.HTML(res.text)
        name = html.xpath('//div[@id="detailVideo"]/img/@alt')[0]
        mp4_data = html.xpath('//div[@id="detailVideo"]/@data-video')[0]
        # print(name, mp4_data)
        mp4_url = decode_mp4(mp4_data).decode('utf-8')
        print(mp4_url)
        result = requests.get("http:" + mp4_url)
        with open(name + ".mp4", 'wb') as f:
            f.write(result.content)
            f.close()


if __name__ == '__main__':
    main()

欢迎大家在评论中交流技术,记得一键三连哦,祝大家顺顺利利开开心心!文章来源地址https://www.toymoban.com/news/detail-432075.html

到了这里,关于大家沉迷短视频无法自拔?Python爬虫进阶,带你玩转短视频的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 那年我头脑发热,选择了自动化,后来我掉入计算机的世界无法自拔

    首先,小雅兰是22届高考考生,而且当时填报志愿也没有填报到计算机相关的专业去,小雅兰是自动化专业的学生,是由于一次偶然的机会,了解到了这个行业,对于写代码所带来的成就感,总之,我很荣幸能够和编程打交道,虽然这方面确实难度很大,但我相信,只要花足

    2024年02月08日
    浏览(59)
  • 求助 爬虫视频无法播放,显示文件已损坏

    import requests import json #数据抓取 base_url=\\\"https://haokan.baidu.com/haokan/ui-search/pc/search/video?pn=1rn=10type=videoquery=%E9%93%81%E8%BD%A8%E4%B8%8B%E9%9B%A8sign=d0fa20768e3d07642df1ae7734d1793cversion=1timestamp=1688716281831\\\" headers={ \\\'user-agent\\\':\\\'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.

    2024年02月08日
    浏览(58)
  • Python学习之路-爬虫进阶:爬虫框架运行

    安装框架的目的 利用setup.py将框架安装到python环境中,在编写爬虫时候,作为第三方模块来调用 框架安装第一步:完成 setup.py 的编写 以下代码相当于一个模板,只用更改name字段出,改为对应的需要安装的模块名称就可以,比如这里是:scrapy_plus 将setup.py文件放到scrapy_plus的

    2024年02月19日
    浏览(41)
  • Python进阶 │反爬虫和怎样反反爬虫

    爬虫、反爬虫和反反爬虫是网络爬虫工作过程中一直伴随的问题。 在现实生活中,网络爬虫的程序并不像之前介绍的爬取博客那么简单,运行效果不如意者十有八九。首先需要理解一下“反爬虫”这个概念,其实就是“反对爬虫”。根据网络上的定义,网络爬虫为使用任何技

    2024年02月09日
    浏览(42)
  • Python小知识 - Python爬虫进阶:如何克服反爬虫技术

    Python爬虫进阶:如何克服反爬虫技术 爬虫是一种按照一定的规则,自动抓取网页信息的程序。爬虫也叫网页蜘蛛、蚂蚁、小水滴,是一种基于特定算法的自动化程序,能够按照一定的规则自动的抓取网页中的信息。爬虫程序的主要作用就是从一个网站或者一个网页中抓取所需

    2024年02月09日
    浏览(41)
  • 【Python】【进阶篇】五、Python爬虫的抓取网页

    Python 爬虫应用案例:爬取目标的网页,并将其保存到本地。 对要编写的爬虫程序进行分析,可以简单分为为以下三个部分: 目标 url 地址 发送请求 将响应数据保存至本地 明确逻辑后,我们就可以正式编写爬虫程序了。 在这里我们使用标准库 urllib 库来编写爬虫,导入所需

    2023年04月10日
    浏览(44)
  • Python基础知识进阶之数据爬虫

           爬虫是指利用网络抓取模块对某个网站或者某个应用中有价值的信息进行提取。还可以模拟用户在浏览器或者APP应用上的操作行为,实现程序自动化。简单来说就是我们把互联网有价值的信息都比喻成大的蜘蛛网,而各个节点就是存放的数据,而蜘蛛网的上蜘蛛比喻

    2024年02月09日
    浏览(59)
  • Python网络爬虫基础进阶到实战教程

    网络爬虫是指一种程序自动获取网页信息的方式,它能够自动化地获取互联网上的数据。通过使用网络爬虫,我们可以方便地获取到网络上的各种数据,例如网页链接、文本、图片、音频、视频等等。 网页是由HTML标签和内容组成,HTML标签通过标签属性可以定位到需要的内容

    2024年02月10日
    浏览(46)
  • 【Python爬虫与数据分析】进阶语法

    目录 一、异常捕获 二、迭代器 三、拆包、聚合、映射 四、filter() 函数 五、匿名函数 六、闭包 七、装饰器 异常捕获可增强程序的健壮性,即程序在遇到遇到异常的时候并不会做中断处理,而是会将异常抛出,由程序员来分析异常和做异常处理。 迭代器通常用于数据结构对

    2024年02月12日
    浏览(42)
  • 【Python】【进阶篇】二十四、Python爬虫的Selenium的基本用法

    Selenium 作为一款 Web 自动化测试框架,提供了诸多操作浏览器的方法,本节对其中的常用方法做详细介绍。 Selenium 提供了 8 种定位单个节点的方法,如下所示: 定位节点方法 方法 | 说明 ---|--- find_element_by_id() | 通过 id 属性值定位 find_element_by_name() | 通过 name 属性值定位 find

    2024年02月04日
    浏览(82)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包