好久都没有写文章了,今天记录一下。
实现目标
我的目标是输入一段网址,能够得到该网页的一部分截图。
思路:
根据网址打开网页
先全屏截图,再保存成图片
之后对这张图片进行部分截图
代码
我不需要滚动截图,所以代码比较简单。
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
下载好了之后的具体操作可以参考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的图片,记得使用这种方法,天呐,我之前的方法好蠢