截取屏幕:
# coding=utf-8
import getpass
from selenium import webdriver
import pyscreenshot as ImageGrab
#from Tkinter import Tk
import time
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument("--test-type")
driver = webdriver.Chrome(chrome_options=options)
driver.maximize_window()
def openurl(hostname, url):
driver.get(url)
#r = Tk()
hostname = hostname
time.sleep(2)
try:
im = ImageGrab.grab()
date = time.strftime("%Y-%m-%d %H.%M.%S")
im.save(hostname + "." + date + ".png")
# im.show()
# r.clipboard_clear()
except IOError:
pass
except AttributeError:
pass
if __name__ == "__main__":
# url1 = "http://10.136.1.74:80/DIplat/"
# url2 = ""
url1 = "https://cn.bing.com/"
urlall = {}
urlall["hostname1"] = url1
for hostname, url in urlall.items():
openurl(hostname, url)
截取网页屏幕:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument("--test-type")
#options.binary_location = "/usr/bin/chromium"
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://***.com')
driver.find_element_by_id("idClose").click()
driver.save_screenshot("screenshot.png")
driver.close()
参考例子:
因为项目需要,要定时对特定网页进行截屏。
选用了Selenium模块,调用无框浏览器phantomjs,每隔90秒截屏一次。
具体代码如下:
from selenium import webdriver
import os
import time
import threading
def road_situation():
#每隔90秒截屏一次
t = threading.Timer(90,road_situation)
t.start()
driver = webdriver.PhantomJS(executable_path='C:/Python36/phantomjs')
driver.maximize_window()
driver.get("http://218.194.160.156:8080/index.html")
#driver.refresh()
driver.get_screenshot_as_file(r"D:\test\pythontest\%s.png" % time.strftime('%Y-%m-%d %H-%M-%S',time.localtime(time.time())))
#print(os.getcwd())
driver.quit()
if __name__ == "__main__":
road_situation()
另一个例子:
# coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from PIL import Image
import os
all_urls = ['http:/****edit']
def login():
chrome_options = Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(executable_path='./chromedriver',chrome_options=chrome_options)
driver.set_window_size(1200, 741)
driver.implicitly_wait(2)
print('初始化中...')
driver.get("http://x*****e")
print('填写登录信息中...')
acc = driver.find_element_by_id('login-email')
pwd = driver.find_element_by_id('login-pass')
btn = driver.find_element_by_tag_name('button')
acc.send_keys('***')
pwd.send_keys('***')
btn.click()
print('跳转到验证码页面中...')
time.sleep(2)
capta = driver.find_element_by_id('code')
capta_input = input('请输入两步验证码:')
capta.send_keys(capta_input)
btn1 = driver.find_element_by_tag_name('button')
btn1.click()
time.sleep(2)
print('跳转到创意编辑页面中...')
return driver
def get_screen(driver,urls):
count = 1
for url in urls:
driver.get(url)
print('正在抓取--> %s'% url)
count +=1
time.sleep(2)
uid = url.split('/')[-2]
cid = url.split('/')[-5]
driver.get_screenshot_as_file("./screen_shot/{}-{}.png".format(uid,cid))
print("创意--> {}-{}.png 已经保存".format(uid,cid))
print('还剩 %s 个'% str(len(urls)-count))
def crop_img():
for img in os.listdir('./screen_shot'):
if img.endswith('.png'):
print('%s裁剪中。。'% img)
im = Image.open('./screen_shot/%s'% img)
x = 755
y = 162
w = 383
h = 346
region = im.crop((x, y, x+w, y+h))
region.save("./screenshot_final/%s" % img)
if __name__ == '__main__':
driver = login()
get_screen(driver,all_urls)
driver.quit()
print('所有抓取结束')
crop_img()
print('所有裁剪结束')