Centos7上Python克隆与对网页完整截图

news2024/11/29 0:47:15

有用的话谢谢点赞~

安装Python3.11

cd /root
wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
tar -xzf Python-3.11.0.tgz
yum -y install gcc zlib zlib-devel libffi libffi-devel
yum install readline-devel
yum install openssl-devel openssl11 openssl11-devel
export CFLAGS=$(pkg-config --cflags openssl11)
export LDFLAGS=$(pkg-config --libs openssl11)
cd /root/Python-3.11.0
./configure --prefix=/usr/python --with-ssl
make
make install
ln -s /usr/python/bin/python3 /usr/bin/python3
ln -s /usr/python/bin/pip3 /usr/bin/pip3

克隆网页

安装httrack

优点:方便

 缺点,很慢克隆一个网页需要3分钟左右,而且他会把html放在没有规则很深的目录下。

sudo yum install epel-release
sudo yum install httrack
import subprocess
import os
import datetime

def clone_website(url):
    # 获取当前时间戳的后五位
    timestamp_suffix = str(int(datetime.datetime.now().timestamp()))[-5:]
    
    # 在当前脚本的目录中创建一个新的目录(如果它不存在)
    current_dir = os.path.dirname(os.path.realpath(__file__))
    output_dir = os.path.join(current_dir, timestamp_suffix)
    os.makedirs(output_dir, exist_ok=True)
    
    # 构建 HTTrack 命令,使用10个并发连接
    command = [
        'httrack',
        url,
        '-O', output_dir,
        '+*.css', '+*.js', '+*.png', '+*.jpg', '+*.jpeg', '+*.gif', '+*.bmp', '+*.tif', '+*.ico', '+*.svg', '+*.woff', '+*.woff2', '+*.ttf', '+*.eot',
        '+*.doc', '+*.docx', '+*.xls', '+*.xlsx', '+*.ppt', '+*.pptx', '+*.pdf',
        '-v',  # 显示详细的输出
        '-c20'  # 设置并发连接数为10
    ]
    
    # 调用 HTTrack
    result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    
    # 检查结果
    if result.returncode == 0:
        print(f'Website cloned successfully to {output_dir}.')
    else:
        print(f'Error: {result.stderr}')

# 使用函数,替换下面的URL为你要克隆的网站的URL
clone_website('https://jw.cq.gov.cn/zwxx_209/gggs/202304/t20230407_11857087.html')

克隆的效果,复制到windows后查看: 

对网页长截图

Centos7自带了火狐浏览器,先给卸载,然后安装新的:
 

sudo yum install firefox

然后去:火狐浏览器下载链接,选择geckodriver-v0.33.0-linux64.tar.gz的

tar -zxvf geckodriver-v0.23.0-linux64.tar.gz
mv geckodriver /usr/bin
pip3 install selenium
pip3 install pillow
from selenium import webdriver
from PIL import Image
import io
import time

# 初始化浏览器选项
options = webdriver.FirefoxOptions()
options.add_argument('--headless')

# 启动Firefox浏览器
driver = webdriver.Firefox(options=options)

# 设置浏览器窗口大小
driver.set_window_size(1920, 1080)  # 设置足够宽的窗口以避免水平滚动条

# 访问网页
driver.get('https://mp.weixin.qq.com/s?__biz=MzA4NzA4OTcxOA==&mid=2652043883&idx=1&sn=b92866b4ca48eb9347c86975ef0d7d63&chksm=8bd8ed32bcaf6424cd29c8f570e4017a891845d4eaa0f84200a296c2559fce58f7812444616d&mpshare=1&scene=23&srcid=0317rO8OszUoDa3ONY9rPLV2&sharer_sharetime=1679227735767&sharer_shareid=81423ad49b97041adbcf45fdceef7dc6#rd')
time.sleep(5)  # 给页面时间加载内容

# 获取页面总高度
total_height = driver.execute_script("return document.body.parentNode.scrollHeight")

# 开始截图
slices = []
offset = 0
while offset < total_height:
    # 滚动到新的截图位置
    driver.execute_script(f"window.scrollTo(0, {offset});")
    time.sleep(2)  # 等待滚动动画完成和内容加载
    img = Image.open(io.BytesIO(driver.get_screenshot_as_png()))
    slices.append(img)
    offset += img.size[1]

# 将截图拼接为一张完整的图片
screenshot = Image.new('RGB', (slices[0].size[0], total_height))
offset = 0
for img in slices:
    screenshot.paste(img, (0, offset))
    offset += img.size[1]

# 保存截图
screenshot.save('entire_page_screenshot.png')

# 关闭浏览器
driver.quit()

效果如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1176836.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

TCP/IP协议群

TCP/IP协议群 什么是TCP/IP协议群 从字面意义上讲&#xff0c;有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下&#xff0c;它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说&#xff0c;IP 或 ICMP、…

AI:62-基于深度学习的人体CT影像肺癌的识别与分类

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

MMdetection3.x个人笔记

1.在自定义数据集用训练出的权重进行可视化推理 input(jpg文件) model_config 这两个可以不用加前面的形参 然后用 \ 隔开 写上 --weight xx.pth python demo/image_demo.py data/coco_duck/train2017/10640.jpg work_dirs/solov2_r50_fpn_1x_coco/solov2_r50_fpn_1x_coco…

【MATLAB源码-第68期】基于matlab的802.11b 11Mbps CCK调制解调误码率仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 当涉及802.11b无线局域网&#xff08;Wi-Fi&#xff09;标准时&#xff0c;CCK&#xff08;Complementary Code Keying&#xff09;调制解调技术起着关键作用。下面解释一下CCK在802.11b中的工作原理和特点&#xff1a; 1. 数…

【QT】设置焦点及光标位置

很高兴在雪易的CSDN遇见你 ,给你糖糖 欢迎大家加入雪易社区-CSDN社区云 前言 本文分享Qt中如何设置焦点和光标位置的解决方案,并给出常见的问题解决方案,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(…

22款奔驰GLE450升级几何多光束大灯 车辆自检等功能

每个大灯配备的84个LED灯可确保提供最佳的道路照明&#xff0c;从而始终确保照明灯能够在需要时准确开启。利用位于风挡玻璃后方的摄像头提供的信息&#xff0c;4个控制单元能够以每秒100次的速度计算出理想的灯光模式 驾驶员能够全神贯注于交通状况&#xff0c;无需频繁切换近…

PyCharm 无法登陆 Codeium 的解决方法

PyCharm 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述PyCharm 使用 token 登陆 Codeium PyCharm 无法登陆 Codeium 的问题描述 使用 PyCharm 登录 Codeium 时&#xff0c;单击 Login 无反应&#xff0c;单击侧边栏的 Codeium 图标也一直显示连接失败。 PyCharm 使用 to…

0.为什么要学c++高性能部署

1.为什么学 python用于训练和demo&#xff0c;c用来部署&#xff0c;是最好的匹配模式。在实际的项目中&#xff0c;python做产品&#xff0c;尤其是需要多线程的&#xff0c;因为GIL锁的限制&#xff0c;劣势非常大&#xff0c;作为胶水语言&#xff0c;性能也比不上c。总结&a…

ModbusTcp通信(S7-1200PLC作为服务器端)

S7-200Smart plc作为ModbusTcp服务器端的通信 S7-200SMART PLC ModbusTCP通信(ModbusTcp服务器)_s7-200 modbustcp-CSDN博客文章浏览阅读2.3k次。S7-200SMART PLC 作为ModbusTCP通信(客户端)编程应用和程序详细讲解可以查看下面的博客,链接地址如下:S7-200SMART PLC Modbus…

以订单退款流程为例,聊聊如何优化策略模式

如果有人问你什么是策略模式&#xff1f;你可以尝试这样回答 策略模式是一种行为设计模式&#xff0c;它允许在运行时根据不同的情况选择不同的算法策略。这种模式将算法的定义与使用的代码分离开来&#xff0c;使得代码更加可读、可维护和可扩展。 在策略模式中&#xff0c;通…

如何在公网环境下使用移动端通过群晖管家管理部署自己家里局域网内的黑群晖

白嫖怪狂喜&#xff01;黑群晖也能使用群晖管家啦&#xff01; 文章目录 白嫖怪狂喜&#xff01;黑群晖也能使用群晖管家啦&#xff01;1.使用环境要求&#xff1a;2.下载安装群晖管家app3.随机地址登陆群晖管家app4.固定地址登陆群晖管家app 自己组装nas的白嫖怪们虽然也可以通…

第四章:Coverage-based testing

文章目录 Control-flow testingData-flow testingMutation analysisControl-flow testingCFG 注意事项Definitions for control-flow analysisexecution pathbranch / decisionconditionfeasible pathcoverage-based 标准Statement coverage (or node coverage)Branch coverage…

数据库的备份和恢复

备份 完全备份&#xff1a;整个数据库完整的进行备份 增量备份&#xff1a;在完全备份的基础上&#xff0c;对后续新增的变量进行备份 备份的需求&#xff1a; 1、在生产环境中&#xff0c;数据的安全至关重要。任何数据的丢失都可能产生非常严重的后果 2、数据为什么会丢失…

电力设备行业密钥管理系统的功能及特点 安当加密

电力设备行业密钥管理系统的主要功能包括&#xff1a; 密钥生成&#xff1a;密钥管理系统能够采用多因素身份验证技术&#xff0c;如指纹识别和动态口令等&#xff0c;确保生成的密钥对用户来说易于使用&#xff0c;同时又足够安全。密钥存储&#xff1a;应采用多层安全机制&a…

管道的介绍

管道 它是一个连接读写进程的文件&#xff0c;用户进程间数据交互和进程同步造作。管道是单向的&#xff0c;发送进程视管道为输出文件&#xff0c;将大量数据以字节流的形式送入管道&#xff1b;接收进程视管道为输入文件&#xff0c;接收管道的数据。 管道优缺点 1、管道…

【C++初阶】一、入门知识讲解(C++关键字、命名空间、C++输入输出、缺省参数、函数重载)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【数据结构初阶】十一、归并排序(比较排序)的讲解和实现 &#xff08;递归版本 非递归版本 -- C语言实现&#xff09;-CSDN博客 引入&#xff1a;什么是C C语言是结构化和模块化的…

HomeAssistant添加HACS插件并实现公网控制米家,HomeKit等智能家居

HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居 文章目录 HomeAssistant添加HACS插件并实现公网控制米家&#xff0c;HomeKit等智能家居基本条件一、下载HACS源码二、添加HACS集成三、绑定米家设备 ​ 上文介绍了如何实现群晖Docker部署HomeAssist…

pytorch实现 --- 手写数字识别

本篇文章是博主在人工智能等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在Pytorch&#xff…

天津热力管网监测系统丨高效、稳定的供热解决方案

热力管网监测系统是一种用于监测和控制系统热力管道的智能技术。热力管网监测系统通过将传感仪器建设在热力管道上&#xff0c;实现对管道内温度、压力、流量等参数的实时监测&#xff0c;同时将数据传输到控制中心进行数据分析&#xff0c;以保障热力管道的安全稳定运行。 中央…