由于需要使用python的selenium库来实现批量对URL的截图,在使用过程中遇到一些小坑,记录下来
使用selenium库截图
第一步,确定我们是需要使用selenium库的截图函数.
即save_screenshot(‘test.png’)。
driver = webdriver.Chrome()
url = 'https://www.baidu.com'
driver.get(url)
driver.save_screenshot('test.png')
driver.quit()
设置分辨率大小
完成常规的截图需求之后,我们发现截图的框很奇怪,于是为了方便设置了一些老笔记本的1366x768的分辨率作为截图的分辨率。
即:set_window_size(1366,768)
driver = webdriver.Chrome()
url = 'https://www.baidu.com'
driver.set_window_size(1366,768)
driver.get(url)
driver.save_screenshot('test.png')
driver.quit()
设置超时时间
由于有些链接加载非常缓慢,或者站点已经关闭,则需要设置一个超时,如果这个时间还没加载完则立即结束加载,实现截图。
driver = webdriver.Chrome()
driver.set_page_load_timeout(5)
driver.set_window_size(1366,768)
try:
driver.get('https://www.baidu.com')
print('load success!')
except Exception:
driver.execute_script('window.stop()')
print('load error!')
finally:
driver.save_screenshot('test.png')
print('over!')
driver.quit()
设置无界面浏览
当需要截多个url时,频繁弹出窗口会影响其他操作,于是需要设置“无界面”。
即:add_argument(‘–headless’)
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(options=chrome_options)
driver.set_window_size(1366,768)
driver.get('https://www.baidu.com')
driver.save_screenshot('test.png')
driver.quit()
忽略证书报错
由于一些网站的证书存在问题,当我们去访问的时候chrome会提示“您的连接不是私密连接”,无法正常访问、截图,解决方案即忽略这个提示。
即:add_argument(‘ignore-certificate-errors’)
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('ignore-certificate-errors')
driver = webdriver.Chrome(options=chrome_options)
driver.set_window_size(1366,768)
driver.get('https://cerp.ccb.com')
driver.save_screenshot('test.png')
driver.quit()
暂时写这么多,后续会继续补充。
待补充
- 读文件获取url列表
- 长截图
- 多线程
- 先判断端口存活再访问