第一步,下载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
def fangfa(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.youkuaiyun.com/weixin_44110998/article/details/103185785
- 调用浏览器打印并保存为pdf参考:https://blog.youkuaiyun.com/weixin_42333581/article/details/124382171
- 打包参考:https://blog.youkuaiyun.com/yiwenrong/article/details/103954498
- 自动化操作——输入,点击参考:https://cloud.tencent.com/developer/article/1741674
- 清除输入框内容参考:https://blog.youkuaiyun.com/DansonC/article/details/98839097
- 标签页切换参考:https://www.cnblogs.com/mengyu/p/7455570.html https://blog.youkuaiyun.com/saber_sss/article/details/103460706
这篇博客详细介绍了如何利用Python的selenium库和Chrome浏览器生成PDF,包括设置浏览器驱动、配置打印选项以及使用headless模式的注意事项。此外,还讲解了如何将程序用pyinstaller打包成可执行文件,以便于部署和运行。
1061

被折叠的 条评论
为什么被折叠?



