第一步,下载selenium
命令行输入pip install selenium,等待下载完成
第二步,安装浏览器驱动
我下载的chrom的驱动:https://registry.npmmirror.com/binary.html?path=chromedriver/
要下载对应于浏览器版本的驱动,否则程序将无法正确运行。
其他浏览器,或下载源:
Firefox浏览器驱动:geckodriver
Chrome浏览器驱动:chromedriver ,CNPM Binaries Mirror (npmmirror.com), taobao备用地址
IE浏览器驱动:IEDriverServer
Edge浏览器驱动:MicrosoftWebDriver
Opera浏览器驱动:operadriver
PhantomJS浏览器驱动:phantomjs
第三步,配置驱动地址
先导入包,然后因为版本更新,所以路径被整合入service中
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
path = Service("chromedriver.exe")#如果driver文件和此py文件放在一个文件夹内可以这样写路径,这样打包后driver文件和exe文件放在一个文件夹内就行#path = Service(r"C:\Users\22505\Downloads\chromedriver_win32\chromedriver.exe") # 注意这个路径需要时可执行路径(chmod 777 dir or 755 dir)
driver = webdriver.Chrome(service=path)
链接前的r,我推测代表使用电脑上的路径表示方式,否则斜杠需要换个方向,或者写两个\ 表示转义。
第四步,测试连接
配置以后使用get命令打开驱动进行网页查看。
driver.get("https://www.这是个测试链接.com")
要加 “ https:// ” 否则会说参数错误。
用selenium打印pdf
两种方式
方式一
调用chrome自带的打印,通过打印另存为pdf
需要设置settings
settings ={"recentDestinations":[{"id":"Save as PDF","origin":"local","account":""}],"selectedDestinationId":"Save as PDF","version":2,# 另存为pdf,1 是默认打印机"isHeaderFooterEnabled":True,# 是否勾选页眉和页脚# "customMargins": {},# "marginsType": 2,# "scaling": 100,# "scalingType": 3,# "scalingTypePdf": 3,# "isLandscapeEnabled":True,#landscape横向,portrait 纵向,若不设置该参数,默认纵向"isCssBackgroundEnabled":True,# 是否勾选背景图形"mediaSize":{"height_microns":297000,"name":"ISO_A4","width_microns":210000,"custom_display_name":"A4 210 x 297 mm"},}
prefs ={'printing.print_preview_sticky_settings.appState': json.dumps(settings),'savefile.default_directory': savepath,#此处填写你希望文件保存的路径}
chrome_options.add_argument('--kiosk-printing')#静默打印,无需用户点击打印页面的确定按钮
chrome_options.add_experimental_option('prefs', prefs)
然后是设置experimental option的参数,显示导入settings,然后保存路径。
# 利用js修改网页的title,该title最终就是PDF文件名,利用js的window.print可以快速调出浏览器打印窗口,避免使用热键ctrl+P my_test_file1
driver.execute_script('document.title="'+webName1[num]+'.pdf";window.print();')
然后使用js命令调出打印窗口,ctrl + p 不知道怎么用。
这个方法没法使用headless无头模式,因为无头模式是个沙盒,无法加载插件,听说可以使用pywin32实现。
方式二
使用print to pdf 转化为pdf再打印。本次需求中人工方式就是打印预览,而且需要时间戳,所以这个方法不一定适用本次需求,所以没有学习尝试。
处理一些直接输入链接无法访问的网站
首先通过selenium打开首页
然后通过driver获取标签的功能输入要查询的,然后点击
获取xpath可以检查源码,找到需要的标签然后右击-复制-复制xpath就能获得
By需要引入
from selenium.webdriver.common.by import By
deffangfa(driver,comName):
driver.get("首页链接")input= driver.find_element(By.XPATH,'xpath')#获取输入框input.clear()# 清空输入框input.send_keys(comName)# 再输入框内输入要输入的文字
click = driver.find_element(By.XPATH,'//*[@id="search"]')# 获取需要点击的标签
click.click()# 点击操作
driver.close()# 关闭窗口# now_handle = driver.current_window_handle
all_handles = driver.window_handles # 获取窗口的句柄# for handles in all_handles:# if now_handle != handles:
driver.switch_to.window(all_handles[-1])# 切换窗口
time.sleep(2)
driver.execute_script('document.title="保存文件的名字.pdf";window.print();')
time.sleep(2)
打包python程序
打包
一个初级的打包,只打包了py文件。
1.下载pyinstaller
pip install pyinstaller
2.进入py文件所在文件夹,然后打开控制台,输入
pyinstaller -F --icon=图标文件.ico py文件.py
然后文件夹中会出现一个dist,里面就是打包好的exe文件。
运行
要把下载的driver文件和python文件放一起。
一些打包的命令
- selenium的安装和简单使用参考:https://blog.csdn.net/weixin_44110998/article/details/103185785
- 调用浏览器打印并保存为pdf参考:https://blog.csdn.net/weixin_42333581/article/details/124382171
- 打包参考:https://blog.csdn.net/yiwenrong/article/details/103954498
- 自动化操作——输入,点击参考:https://cloud.tencent.com/developer/article/1741674
- 清除输入框内容参考:https://blog.csdn.net/DansonC/article/details/98839097
- 标签页切换参考:https://www.cnblogs.com/mengyu/p/7455570.html https://blog.csdn.net/saber_sss/article/details/103460706
版权归原作者 Brilliance_DZ 所有, 如有侵权,请联系我们删除。