当前位置: 首页 > news >正文

Python自动化我选DrissionPage,弃用Selenium

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

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

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

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

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

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

douyin.py:

# ---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 sysBASE_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:
# ---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 timeBASE_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 BaseModeldouyin_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.pagestart_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)breakuse_time = time.time() - start_timedata = {"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.icon-default.png?t=N7T8https://github.com/STZZ-1992/douyin_analysis

http://www.lryc.cn/news/285622.html

相关文章:

  • MQ 消息丢失、重复、积压问题,如何解决?
  • 【Linux】第三十三站:日志
  • MVC和MVVM区别和VUE关系
  • vue3自定义按钮点击变颜色实现(多选功能)
  • Redis的key过期策略是怎么实现的
  • vue+elenemt分页+springboot
  • C++ :命名空间域
  • 提升网站关键词排名的工具
  • ICMP控制消息 汇总
  • C#,入门教程(22)——函数的基础知识
  • 已经30了,5年多,只会功能测试的怎么办?
  • 什么是UML?有什么用?
  • 盘点好用内容合规监测工具
  • CC工具箱使用指南:【查找锐角】
  • kafka消费相关问题(GPT回答版本)
  • 【C++】string的基本使用二
  • MATLAB解决考研数学一题型(上)
  • Vue以弹窗形式实现导入功能
  • 分布式锁原理及实现
  • 蓝桥杯官网填空题(海盗与金币)
  • JavaScript 中JSON 字符串和对象之间的转换。
  • All the stories begin at installation
  • Linux文件系统与设备文件
  • QT的绘图系统QPainterDevice与文件系统QIODevice
  • Spark流式读取文件数据
  • Leetcode 3011. Find if Array Can Be Sorted
  • Databend 开源周报第 129 期
  • python 正则表达式学习(1)
  • 安全防御-基础认知
  • 各省税收收入、个人和企业所得税数据,Shp、excel格式,2000-2021年