首页 > 编程语言 >软件编程 ---- 截取网页

软件编程 ---- 截取网页

时间:2023-11-24 11:47:42浏览次数:32  
标签:futures url 截取 编程 ---- URL file options chrome

 

# 从Selenium和concurrent.futures导入必要的模块和类
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from concurrent.futures import ThreadPoolExecutor
import concurrent.futures.thread

# 定义一个函数,用于捕获整个页面的截图
def capture_full_page_screenshot(url, save_path):
    # 设置Chrome选项以无头模式运行(不显示浏览器窗口)
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--disable-gpu")
    chrome_options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

    # 使用指定选项初始化Chrome WebDriver实例
    driver = webdriver.Chrome(options=chrome_options)

    try:
        # 导航到指定的URL
        driver.get(url)
        
        # 定义一个lambda函数,用于获取整个网页的高度
        S = lambda X: driver.execute_script('return document.body.parentNode.scroll'+X)
        
        # 设置窗口大小以捕获整个网页
        driver.set_window_size(1280, 10000)
        
        # 将网页的截图保存到指定路径
        driver.save_screenshot(save_path)
        
        # 打印消息,指示截图的保存位置
        print(f"截图已保存至:{save_path}")
    finally:
        # 退出WebDriver实例以释放资源
        driver.quit()

# 定义一个函数,使用并发执行从文件中的URL列表捕获截图
def capture_screenshots_from_file(url_list):
    # 使用ThreadPoolExecutor以并发方式执行每个URL的capture_full_page_screenshot
    with ThreadPoolExecutor() as executor:
        # 使用字典存储future对象及其相应的URL
        futures = {executor.submit(capture_full_page_screenshot, url, f"{url.split('//')[-1].replace('/', '_')}.png"): url for url in url_list}

        # 遍历已完成的future
        for future in concurrent.futures.as_completed(futures):
            url = futures[future]
            try:
                # 获取已完成future的结果(或者在执行过程中出现异常时引发异常)
                future.result()
            except Exception as e:
                # 如果执行过程中出现异常,则打印错误消息
                print(f"捕获 {url} 的截图时出现错误:{e}")

# 示例用法
# 从文件中读取URL
websites_file_path = "websites.txt"
with open(websites_file_path, 'r') as file:
    urls = [line.strip() for line in file]

# 使用URL列表调用capture_screenshots_from_file函数
capture_screenshots_from_file(urls)

 

标签:futures,url,截取,编程,----,URL,file,options,chrome
From: https://www.cnblogs.com/GKLBB/p/17853387.html

相关文章

  • 【HarmonyOS】初识ArkUI——快速实现页面导航之Tabs
    ​ 【关键字】HarmonyOS、ArkUI、Tabs、自定义导航栏、底部导航 1、写在前面今天来介绍一下如何通过ArkUI来实现应用中常见的导航效果——底部导航,我们是通过Tabs来实现,并且会使用自定义导航栏的形式来构建,参考文档:https://developer.harmonyos.com/cn/docs/documentation/d......
  • 【HarmonyOS】初识ArkUI——快速实现页面导航之Navigation
    ​【关键字】HarmonyOS、ArkUI、Navigation、自定义导航栏、底部导航 1、写在前面今天继续来介绍如何通过ArkUI来实现应用中常见的导航效果——底部导航,上一篇中介绍了Tabs的实现方式,今天来介绍另一种组件Navigation,参考文档:https://developer.harmonyos.com/cn/docs/documen......
  • 二维费用背包
    二维费用背包题目描述有\(N\)件物品和一个容量是\(V\)的背包,背包能承受的最大重量是\(M\)。每件物品只能用一次。体积是\(v_i\),重量是\(m_i\),价值是\(w_i\)。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价......
  • 未能加载文件或程序集“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicK
    报错内容 解决办法:在Web.config的<configuration></configuration>中添加如下代码即可。<configuration><runtime><assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1"><dependentAssembly><assembly......
  • OpenMLDB v0.8.4 诊断工具全面升级
    新的v0.8.4版本中,我们对于诊断工具进行了全面系统化的升级,以提供更加完整和智能化的诊断报告,有助于高效排查OpenMLDB集群问题,大幅提升运维效率。相比于之前的版本,新的诊断工具增添一键诊断功能,使用openmldb_toolinspect就可以一键诊断集群的健康状态。提供的信息包括XXDetail......
  • 软件编程 --- 发http包
     #时间12:08#"expires_in":171205,importrequestsimportjsonfromdatetimeimportdatetimeimporttimeurl="https://jywgappthw.chinatowercom.cn:9000/workorder/bill/getBillList/"headers={"Authorization":"......
  • 【AGC】元服务开放式测试找不到服务的问题
    ​【问题描述】开发者开发元服务,想要在正式上架前进行测试,于是选择了AGC的开放式测试功能,可以指定人员参与上架后的测试。但是开发者在开放式测试审核成功后,无法在应用市场查找到该服务,其实出现这个问题的原因有很多,接下来就一个一个进行排查。 【问题分析】1.     首先......
  • 关于3a5000 龙芯 loongarch 新世界与旧世界
       总结一下:旧世界指的是: 虽然发布了loongarch架构,但是仍然使用着部分的MIPS指令。新世界指的是:完全使用loogarch架构的,与开源组织对接,完全不用mips的一点东西。......
  • OpenMLDB SQL 开发调试神器 - OpenMLDB SQL Emulator
    今天为大家介绍一款来自OpenMLDB社区的优秀独立工具-OpenMLDBSQLSimulator(https://github.com/vagetablechicken/OpenMLDBSQLEmulator),可以让你更加高效方便的开发、调试OpenMLDBSQL。为了高效的实现时序特征计算,OpenMLDBSQL对标准SQL做了改进和扩展,因此初学者在使用......
  • 【快应用】华为ide编译报错处理合集
    ​【关键词】Openssl 、静态检查、scoped 【问题描述1】华为ide编译报错,提示invalidopensslexitcode:3221225781%opensslgenrsa4096,该如何解决?​【解决方案】方法一:在华为ide的目录resources\app\extensions\deveco-debug\lib\OpenSSL-Win64\bin下执行./openssl.exe......