[python]利用Selenium实现网页全屏截图+部分截图并web实现

好久都没有写文章了,今天记录一下。

实现目标

我的目标是输入一段网址,能够得到该网页的一部分截图。

思路:
根据网址打开网页
先全屏截图,再保存成图片
之后对这张图片进行部分截图

代码

我不需要滚动截图,所以代码比较简单。

from selenium import webdriver
from time import sleep
import numpy as np
import cv2


driver = webdriver.Chrome()
driver.maximize_window()  # 设置打开页面最大化,目的是更好的截取
# 打开网址
driver.get("https://www.baidu.com/")
sleep(15)#我实际运行的时候网址是一个加密网址,需要输入账号密码。所以这里在截图之前等待15秒,在这期间输入密码.
 # 截取当前页面
driver.save_screenshot('result.png')
img = cv2.imread('result.png',1);
# size = img.shape
# w = size[1] #宽度
# h = size[0] #高度
# print(size)
# print(w)
# print(h)
cutimg = img[0:500,0:500]
# 利用numpy切片进行裁剪 截取出来的是矩形图片,需要两个坐标。
# 左上角坐标(x1,y1),右下角坐标(x2,y2),裁剪坐标为[y1:y2, x1:x2]
cv2.imwrite('cut.png',cutimg)

可能出现的问题

例如selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

这是因为没有下载浏览器的driver

需要将指定的driver放到PATH中。
对于driver下载链接如下:
Chrome

Edge

Firefox

下载好了之后的具体操作可以参考link

web实现

对于python,streamlit很好用.
在这里插入图片描述](https://img-blog.csdnimg.cn/7ee6a1a231a240df80ca919e48fd0e9c.png)

全部代码

Run

streamlit run app.py

一个更好用的方法

救大命,我竟然忘记了打开网页下载图片竟然有专门的语句。

with Image.open(requests.get(url,stream=True).raw) as im:
      im.save('test.jpg') 

image= Image.open(requests.get(url,stream=True).raw)
print(image)
之后输出的有图片的size,说明第一条语句成功,并且是一张图

链接: python Request库的get()方法
链接: 图片读取:Image.open(ImgPath)

读取远程url的图片,记得使用这种方法,天呐,我之前的方法好蠢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪呀呀呀呀呀呀呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值