在债券融资部门实习时,由于要检查发行人资信状况,可能需要去各大部委及细分监管部门的官网和失信公示平台搜集数据并截图,这项工作不仅要针对发行人还要截取重要的子公司及联营企业的信息,而发行人往往资产规模庞大,子公司及联营企业众多,手工截图是一项非常无聊的活,动辄要占用几天的时间,为实现技术性摸鱼,我们可以利用下面代码简化上述任务,目前此为原始版本,还需完善,但是已经让我们看似忙碌工作,其实愉快摸鱼。
不同的网站需要采取不同的方法,有的填充搜索框用的是find_element_by_id,还有少数用的是find_element_by_name,要看网站的具体情况
# -*- coding: utf-8 -*-
from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import os
import pandas as pd
from PIL import ImageGrab
import random
# 截图程序
def screenshot(firm_name,web_name,input_box_id,target_url):
try:
driver = webdriver.Chrome()
driver.get(target_url)
input_box=driver.find_element_by_id(input_box_id)
input_box.clear()
input_box.send_keys(firm_name)
input_box.send_keys(Keys.ENTER)
time.sleep(1)
driver.maximize_window()
#也可以用webdriver 自带的get_screenshot_as_file()函数,不过它能截取的仅限浏览器内的内容 #driver.get_screenshot_as_file('C:\\Users\\11580\\Desktop\\test_wechat\\'+firm_name+'\\'+firm_name+web_name+'.png')
#随机休眠的目的是避免被官网识别为自动化测试工具,引起不必要的错误
time.sleep((random.randint(4,8)))
im = ImageGrab.grab()
'''
实现截屏功能,我的电脑是1920*1018的显示器,并且为125%的放大,全屏截图有点小问题,这个可以参考Stack Overflow中大神们提供的方法,传送门为:(https://stackoverflow.com/questions/25467288/pils-imagegrab-is-capturing-at-the-wrong-resolution )为了方便日常使用,推荐使用改注册表的方式,亲测有效,不影响正常的使用体验
'''
path_way='C:\\Users\\11580\\Desktop\\test_wechat\\'+firm_name+'\\'+firm_name+web_name+'.png'
im.save((