• Python+Selenium实现长截图、自动上传并发布抖音短视频实例演示教程


    Python+Selenium实现长截图

    最近碰到一个问题,需求是把做好的报告发到领导邮箱(只能发邮箱,不接受邮箱链接等方式),大家都知道outlook对js是不支持的,只支持最简单的html样式,最后选定的方法是截图,但是报告可能很长啊,怎么能一次性全截下来呢。

    通过Python seleniu就可操作浏览器全屏截图

    接下来直接上代码

    1. # -*- coding: utf-8 -*-
    2. from selenium import webdriver
    3. from selenium.webdriver.chrome.options import Options
    4. import os
    5. import time
    6. def get_image(url, pic_name):
    7. #chromedriver的路径
    8. chromedriver = r"C:\Users\name\AppData\Local\Google\Chrome\Application\chromedriver.exe"
    9. os.environ["webdriver.chrome.driver"] = chromedriver
    10. #设置chrome开启的模式,headless就是无界面模式
    11. #一定要使用这个模式,不然截不了全页面,只能截到你电脑的高度
    12. chrome_options = Options()
    13. chrome_options.add_argument('headless')
    14. driver = webdriver.Chrome(chromedriver,chrome_options=chrome_options)
    15. #控制浏览器写入并转到链接
    16. driver.get(url)
    17. time.sleep(1)
    18. #接下来是全屏的关键,用js获取页面的宽高,如果有其他需要用js的部分也可以用这个方法
    19. width = driver.execute_script("return document.documentElement.scrollWidth")
    20. height = driver.execute_script("return document.documentElement.scrollHeight")
    21. print(width,height)
    22. #将浏览器的宽高设置成刚刚获取的宽高
    23. driver.set_window_size(width, height)
    24. time.sleep(1)
    25. #截图并关掉浏览器
    26. driver.save_screenshot(pic_name)
    27. driver.close()
    28. #你输入的参数
    29. url = 'https://movie.douban.com/top250'
    30. pic_name = r'D:\image.png'
    31. get_image(url, pic_name)

    Python+selenium 实现自动上传并发布抖音短视频实例演示 

    素材准备

    一个为视频,另一个为像素大小不小于视频的封面。

    实现过程

    1、调用已启用的浏览器

    (通过调用已启用的浏览器,可以直接跳过登录过程)

    1. from selenium import webdriver
    2. options = webdriver.ChromeOptions()
    3. options.add_experimental_option("debuggerAddress", "127.0.0.1:5003")
    4. driver = webdriver.Chrome(options = options)

    2、上传视频和图片

    1. # 上传本地视频
    2. driver.find_element_by_xpath('//*[text()="发布视频"]').click()
    3. time.sleep(2)
    4. driver.find_element_by_xpath('//input[@type="file"]').send_keys(path_mp4)
    5. # 添加封面
    6. driver.find_element_by_xpath('//*[text()="编辑封面"]').click()
    7. time.sleep(1)
    8. driver.find_element_by_xpath('//div[text()="上传封面"]').click()
    9. time.sleep(1)
    10. driver.find_element_by_xpath('//input[@type="file"]').send_keys(path_cover)
    11. time.sleep(3)
    12. driver.find_element_by_xpath('//*[text()="裁剪封面"]/..//*[text()="确定"]').click()
    13. time.sleep(3)
    14. driver.find_element_by_xpath('//*[text()="设置封面"]/..//*[contains(@class,"upload")]//*[text()="确定"]').click()

    3、完整源码展示

    1. import selenium
    2. from selenium import webdriver
    3. import pathlib
    4. import time
    5. from selenium.webdriver.common.keys import Keys
    6. # 基本信息
    7. # 视频存放路径
    8. catalog_mp4=r"C:\Users\linweiting\Desktop\视频发布"
    9. # 视频描述
    10. describe="三国演义周瑜专栏 #国学 #电视 #智慧"
    11. time.sleep( 5 )
    12. options=webdriver.ChromeOptions( )
    13. options.add_experimental_option( "debuggerAddress", "127.0.0.1:5003" )
    14. driver=webdriver.Chrome( options=options )
    15. path=pathlib.Path( catalog_mp4 )
    16. # 视频地址获取
    17. path_mp4=""
    18. for i in path.iterdir( ) :
    19. if (".mp4" in str( i )) :
    20. path_mp4=str( i )
    21. break
    22. if (path_mp4 != "") :
    23. print( "检查到视频路径:" + path_mp4 )
    24. else :
    25. print( "未检查到视频路径,程序终止!" )
    26. exit( )
    27. # 封面地址获取
    28. path_cover=""
    29. for i in path.iterdir( ) :
    30. if (".png" in str( i ) or ".jpg" in str( i )) :
    31. path_cover=str( i )
    32. break
    33. if (path_cover != "") :
    34. print( "检查到封面路径:" + path_cover )
    35. else :
    36. print( "未检查到封面路径,程序终止!" )
    37. exit( )
    38. def publish_douyin() :
    39. '''
    40. 作用:发布抖音视频
    41. '''
    42. # 进入创作者页面,并上传视频
    43. driver.get( "https://creator.douyin.com/creator-micro/home" )
    44. time.sleep( 2 )
    45. driver.find_element_by_xpath( '//*[text()="发布视频"]' ).click( )
    46. time.sleep( 2 )
    47. driver.find_element_by_xpath( '//input[@type="file"]' ).send_keys( path_mp4 )
    48. # 等待视频上传完成
    49. while True :
    50. time.sleep( 3 )
    51. try :
    52. driver.find_element_by_xpath( '//*[text()="重新上传"]' )
    53. break
    54. except Exception as e :
    55. print( "视频还在上传中···" )
    56. print( "视频已上传完成!" )
    57. time.sleep(3)
    58. # 添加封面
    59. driver.find_element_by_xpath( '//*[text()="编辑封面"]' ).click( )
    60. time.sleep( 5 )
    61. driver.find_element_by_xpath( '//div[text()="上传封面"]' ).click( )
    62. time.sleep( 1 )
    63. driver.find_element_by_xpath( '//input[@type="file"]' ).send_keys( path_cover )
    64. time.sleep( 3 )
    65. driver.find_element_by_xpath( '//*[text()="裁剪封面"]/..//*[text()="确定"]' ).click( )
    66. time.sleep( 3 )
    67. driver.find_element_by_xpath( '//*[@class="operation--2_JP2"]//*[text()="确定"]' ).click()
    68. #//div[@class="dialog-operation--35HYf"]//*[text()="确定"]
    69. #//*[text()="设置封面"]/..//*[contains(@class,"upload")]//*[text()="确定"]
    70. time.sleep( 5 )
    71. # 输入视频描述
    72. driver.find_element_by_xpath( '//div[@aria-autocomplete="list"]//br' ).send_keys(
    73. describe + " #上热门 #dou上热门 #我要上热门" )
    74. # 设置选项
    75. time.sleep( 1 )
    76. driver.find_element_by_xpath( '//*[@class="radio--4Gpx6"]' ).click( )
    77. time.sleep( 1 )
    78. driver.find_element_by_xpath( '//*[@class="semi-select-selection"]//span[contains(text(),"输入")]' ).click( )
    79. time.sleep( 1 )
    80. driver.find_element_by_xpath( '//*[@class="semi-select-selection"]//input' ).send_keys( "深圳" )
    81. time.sleep( 5 )
    82. driver.find_element_by_xpath( '//*[@class="semi-popover-content"]//*[text()="深圳人才公园"]' ).click( )
    83. # 同步到西瓜视频
    84. # driver.find_element_by_xpath('//div[@class="preview--27Xrt"]//input').click() # 默认启用一次后,后面默认启用了。
    85. #driver.find_element_by_xpath( '//*[@class="card-pen--2P8rh"]' ).click( )
    86. driver.find_element_by_xpath('//*[@id="root"]/div/div/div[2]/div[1]/div[12]/div[1]/div/div[2]/div/input')
    87. #driver.find_element_by_xpath( '//*[@class="DraftEditor-root"]//br' ).send_keys( describe + " #上热门" )
    88. #driver.find_element_by_xpath( '//button[text()="确定"]' ).click( )
    89. # 人工进行检查并发布
    90. # time.sleep(3)
    91. # # 点击发布
    92. driver.find_element_by_xpath('//button[text()="发布"]').click()
    93. # 开始执行视频发布
    94. publish_douyin( )

     最后,如需更多Python+Selenium欢迎加我【扣】2646695197,审核通过后,即可进入测试交流群,沟通交流日常测试工作相关内容,

    全网独家Java+Python双语教学+性能测试 icon-default.png?t=M5H6https://ke.qq.com/course/315793?flowToken=1042615

  • 相关阅读:
    11.20 至 11.27 五道典型题记录: 贪心 | 应用题 | 脑筋急转弯 | 区间问题 | 双指针
    Vue 将响应式数据转为普通对象
    「尚硅谷与腾讯云官方合作」硅谷课堂项目视频发布
    数据结构——第一章 算法
    视频孪生,打造虚实共生的数字孪生应用
    RocketMQ第一话 -- Docker安装以及Springboot集成RocketMQ
    2022年大一期末作业——音乐网页(纯html+css+js实现)
    Django与Ajax
    第二届 Oceanbase 开发者大会 实录
    前端代码规范
  • 原文地址:https://blog.csdn.net/weixin_68548441/article/details/125424064