python网页截图并裁剪

截取屏幕:

    # 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('所有裁剪结束')

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值