设为首页收藏本站

安而遇随-随遇而安

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 689|回复: 0

阿里云函数计算使用selenium进行网页截图完成代码示例

[复制链接]

 成长值: 33300

发表于 2019-11-29 16:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x



  1. # -*- coding: utf-8 -*-
  2. # tools.bugscaner.com
  3. import logging
  4. import hashlib
  5. import json
  6. import time
  7. import oss2
  8. from selenium import webdriver
  9. from cgi import parse_qs, escape


  10. def handler(environ, start_response):
  11.     context = environ['fc.context']
  12.     request_uri = environ['fc.request_uri']
  13.     for k, v in environ.items():
  14.       if k.startswith('HTTP_'):
  15.         # process custom request headers
  16.         pass
  17.     # do something here
  18.    
  19.     #获取post参数
  20.     try:
  21.         request_body_size = int(environ.get('CONTENT_LENGTH', 0))
  22.     except:
  23.         request_body_size = 0
  24.     request_body = environ['wsgi.input'].read(request_body_size)
  25.     input_urls = parse_qs(request_body)
  26.     logging.warning(input_urls)
  27.     input_url = input_urls.get("url",[''])[0]
  28.     logging.warning(input_url)
  29.     #谷歌浏览器设置
  30.     option = webdriver.ChromeOptions()
  31.     option.add_argument('user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"')
  32.     option.add_argument("--headless")
  33.     option.add_argument("--no-sandbox")
  34.     option.add_argument("--disable-gpu")
  35.     option.binary_location = "./headless-chromium"
  36.     driver = webdriver.Chrome(executable_path="./chromedriver",chrome_options=option)
  37.     #设置页面访问超时时间
  38.     driver.set_page_load_timeout(5)
  39.     driver.set_script_timeout(5)#这两种设置都进行才有效
  40.     #driver = webdriver.PhantomJS(service_log_path="/tmp/logssssss.log")
  41.     try:
  42.         driver.get(input_url)
  43.     except:
  44.         return [json.dumps({"status":404})]
  45.     scroll_width = driver.execute_script('return document.body.parentNode.scrollWidth')
  46.     scroll_height = driver.execute_script('return document.body.parentNode.scrollHeight')
  47.     driver.set_window_size(scroll_width, scroll_height)
  48.     #time.sleep(2)
  49.     images = driver.get_screenshot_as_png()
  50.     auth = oss2.Auth("LT33HkjkEz", "33Ns4AjdvG1Ow2sxvtzmjcGbvKtECX")
  51.     bucket = oss2.Bucket(auth, 'oss-cn-hangzhou.aliyuncs.com', 'pic')
  52.     filenamemd5 = hashlib.md5(input_url)
  53.     filenamemd5 = str(filenamemd5.hexdigest())
  54.     ifover = False
  55.     for x in range(2):
  56.         try:
  57.             bucket.put_object(filenamemd5+".png", images)
  58.             ifover = True
  59.             break
  60.         except:
  61.             pass
  62.     if ifover:
  63.         status = '200 OK'
  64.         response_headers = [('Content-type', 'text/plain')]
  65.         start_response(status, response_headers)
  66.         return [json.dumps({"status":200,"picurl":filenamemd5})]   
  67.     else:
  68.         status = '200 OK'
  69.         response_headers = [('Content-type', 'text/plain')]
  70.         start_response(status, response_headers)
  71.         return [json.dumps({"status":403})]   
复制代码



来自:http://www.bugscaner.com/jiaobenyuyan/python/227.html
随遇而安
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表