Python自动化我选DrissionPage,弃用Selenium

DrissionPage 是一个基于 python 的网页自动化工具。

它既能控制浏览器,也能收发数据包,还能把两者合而为一。

可兼顾浏览器自动化的便利性和 requests 的高效率。

它功能强大,内置无数人性化设计和便捷功能。

它的语法简洁而优雅,代码量少,对新手友好。

以下是我使用DrissionPage做的抖音无水印视频提取代码:

douyin.py:

python 复制代码
# ---encoding:utf-8---
# @Time    : 2024/1/13 16:43
# @Author  : stzz Wang
# @Email   :1050100468@qq.com
# @Site    : 
# @File    : douyin.py
# @Project : douyi_analysis
# @Software: PyCharm
import os
import sys

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
sys.path.append(BASE_DIR)

from DrissionPage import ChromiumOptions, SessionOptions, WebPage
from CODES.config.CONFIG import *


class DouYin:
    def __init__(self):
        co = ChromiumOptions(ini_path=Config.drission_page_init_file_path)
        so = SessionOptions(ini_path=Config.drission_page_init_file_path)

        self.page = WebPage(chromium_options=co, session_or_options=so)


    def start_listen(self):
        self.page.listen.start()

    def end_listen(self):
        self.page.listen.pause(True)
        self.page.listen.stop()

    def load_page(self, url):
        self.page.get(url)
复制代码
douyin_without_watermarker_analysis.py:
python 复制代码
# ---encoding:utf-8---
# @Time    : 2024/1/13 16:53
# @Author  : stzz Wang
# @Email   :1050100468@qq.com
# @Site    : 
# @File    : douyin_without_watermarker_analysis.py
# @Project : douyi_analysis
# @Software: PyCharm
import os
import sys
import time

BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
sys.path.append(BASE_DIR)

from fastapi import APIRouter
from CODES.controllers.model.douyin import *
from CODES.config.CONFIG import *
import json
from pydantic import BaseModel

douyin_wwa = APIRouter()

douyin_instance = DouYin()


class DouYinWithoutWatermarker(BaseModel):
    url: str


@douyin_wwa.post("/douyin_without_watermarker_analysis")
async def douyin_without_watermarker_analysis(accept: DouYinWithoutWatermarker):
    douyin_instance.load_page(accept.url)
    douyin_instance.start_listen()
    page = douyin_instance.page
    start_time = time.time()
    try:
        while True:
            res = page.listen.wait()  # 等待并获取一个数据包
            if "https://www.douyin.com/aweme/v1/web/aweme/post/" in res.url:
                data = json.loads(res._raw_body)
                data_list = data["aweme_list"]
                data = []
                for item in data_list:
                    d = {
                        "title" : item["desc"],
                        "urls" : item["video"]["play_addr"]["url_list"]
                    }
                    data.append(d)
                break

        use_time = time.time() - start_time
        data = {
            "data": data,
            "use_time": use_time
        }
    except Exception as e:
        data = {
            "data": e,
            "error_code": 500
        }
    finally:
        douyin_instance.end_listen()
    return data

完整代码在github上:

GitHub - STZZ-1992/douyin_analysis: 抖音短视频无水印的解析服务抖音短视频无水印的解析服务. Contribute to STZZ-1992/douyin_analysis development by creating an account on GitHub.https://github.com/STZZ-1992/douyin_analysis

相关推荐
坊钰5 分钟前
【LangGraph框架入门级】2. 图核心概念:State、Node、Edge 与 Reducers
python·ai编程·langgraph
wewowilling7 分钟前
AI大模型开发--01Python基础(无废话)
开发语言·python·函数
小猴子爱上树8 分钟前
跨境电商AI图片翻译工具:批量图片翻译、视频字幕翻译与智能抠图一站式解决
大数据·人工智能·python·音视频
5G微创业11 分钟前
去除抖音视频水印的Python实现
python·微信小程序·去水印
WeiXin_DZbishe13 分钟前
基于微信小程序的本地闲置物品交易平台-计算机毕设 附源码【课程设计】26825
vue.js·spring boot·python·微信小程序·架构·php·课程设计
M--Y15 分钟前
LangChain 提示工程:少样本提示与输出解析器
python·langchain·大模型·llm·输出解析器·少样本提示
朱包林16 分钟前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
棉猴17 分钟前
玩游戏学Python5-函数
开发语言·python·函数·玩游戏·游戏编程
Rain的Java大神之路18 分钟前
[特殊字符]8年Java老兵转型AI Agent:90%的人挂在同一个坑,根本不用学Python!(万字实战复盘,建议收藏)
java·数据库·人工智能·后端·python·spring·ai编程
高级程序源32 分钟前
springboot本地生活服务平台33399-计算机课程设计、毕业设计
vue.js·spring boot·python·mysql·小程序·flask·课程设计