python自动化操作浏览器

郜琦
2023-12-01

python的语法精炼简洁,并且很方便集成自动化工具selenium,因此特别适合各个行业的工作人员学习和编写简单程序来实现“机器人助理”帮我们处理频繁重复的网站操作。

废话不多说,直接上代码,下面为了帮助非IT从业者更方便的了解python语法规则,使用一个demo程序来进行一个简单的自动化入门。

环境要求:安装python3.7或更高版本的SDK,至于代码编辑器可以自行网上搜索,我使用的是Intellij IDEA,这个是付费的,当然网上也有破解方式。

实现功能:访问证监会网站,自动输入公司名称,等待查询结果出来之后,滚动屏幕到最合适的地方,然后截图并将图片保存到本地。(金融从业者,如券商承做经理,可能经常需要做这类事情)

实现代码及相应的代码讲解(直接将以下代码复制到一个test.py文件中即可运行,注意运行的时候如果提示找不到xxx模块,就先pip install一下):

#从selenium(一个第三方自动化开源插件)引入webdriver模块(注意首字母小写一般是模块,首字母大写表示类,一个模块可以包含多个类),用来控制浏览器
from selenium import webdriver
#从selenium(一个第三方自动化开源插件)的webdriver模块的common子模块的keys中引入Keys类,这个类中有很多常量可以直接使用
from selenium.webdriver.common.keys import Keys
#引入python自带的时间模块,用来处理日期和时间
import time
#从PIL(一个第三方的图像处理插件)中引入ImageGrab类,用来截取和保存图片
from PIL import ImageGrab
#从pymouse(python鼠标操作的插件)中引入所有类,用来处理鼠标事件
from pymouse import *
#从pymouse(python键盘操作的插件)中引入所有PyKeyboard类,用来处理键盘事件
from pykeyboard import PyKeyboard

#实例化鼠标对象,可以进行鼠标的相关操作
ms = PyMouse()
#实例化键盘对象,可以进行键盘相关的操作
kb = PyKeyboard()

#加载Chrome web驱动,会打开一个Chrome浏览器
browser = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')
#定义一个变量companyname,来接收用户输入的公司名称。控制台会提示要用户输入公司全称...
companyname = input('输入要查询的公司名称:')

#用浏览器打开一个链接,这里是证监会网站,如果想截取其他网站,可以更改URL
browser.get('http://www.csrc.gov.cn/pub/newsite/')
#将浏览器窗口最大化,方便截屏
browser.maximize_window()
#证监会网站的输入框的ID是“schword”,那我们就根据schword先找到这个元素,并将这个元素(对象)命名为searchBar
#如果是其他网站,搜索框的ID就不是这个了,也可能没有ID,需要根据class查找
searchBar = browser.find_element_by_id('schword')
#因为证监会网站的输入框需要先点击一下,原来的文本才会消失,所以我们要先click一下
searchBar.click()
#在输入框中输入公司全称,并点击回车键
searchBar.send_keys(companyname + Keys.ENTER)
#等待三秒钟,等搜索结果出来
time.sleep(3)
#点击5次向下键,将浏览器中的搜索结果滑动到适合截屏的地方
for i in range(5):
    kb.tap_key(kb.down_key)

#按住Ctrl键(不松手)
kb.press_key(kb.control_key)
#鼠标滚轮向下滚动,Ctrl+滚轮向下表示画面缩放,这里-100会缩放到80%后停止,这样可以截取更多的文字
ms.scroll(-100, 0)
#松开Ctrl键
kb.release_key(kb.control_key)

#等待三秒钟,等待缩放完成
time.sleep(3)

#设置图片路径(包含名称),注意由于这里是放在与test.py相同目录,所以不用设置父路径,直接定义名称,名称的格式可以自己定义
picturename = companyname + '  '+u'中国证监会'+'.jpg'
#截屏,将图片对象命名为image
image = ImageGrab.grab()
#调用图片对象的save方法,传入图片路径,这个方法会把图片保存在设置的路径中
image.save(picturename)

#关闭浏览器窗口
browser.close()
#退出浏览器
browser.quit()

 

 类似资料: