python爬虫自动库DrissionPage保存网页快照mhtml/pdf/全局截图/打印机另存pdf
如何使用页面打印功能,另存为pdf
一、保存网页快照的三种方法
看如下代码,如下三种保存快照的方法,分别是保存pdf、保存mhtml文件、保存全局截图,的方法,具体看网页加载情况可以设置滚动到底部再进行如下操作等
from DrissionPage import ChromiumPage
from urllib.parse import urlparse
browser = ChromiumPage()url = "https://www.baidu.com/"
file_name = urlparse(url).netloc.split(':')[0].lstrip('www.')
browser.get(url)
browser.save(path="D:\\", name=file_name, as_pdf=True)
browser.save(path="D:\\", name=file_name, as_pdf=False)
browser.get_screenshot(path="D:\\", name=file_name, full_page=True) 二、利用打印机保存pdf的方法
常规步骤,一般我们在浏览器打开网页,然后鼠标右击检查,选择打印,会出现如下页面,然后我们选择另存为pdf,保存这么一个流程,那么dp如何实现这个流程,代码在文章末尾

打印机保存pdf最终代码
import json from DrissionPage import ChromiumPage, ChromiumOptionssettings = {"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": False, # landscape横向,portrait 纵向,若不设置该参数,默认纵向"isCssBackgroundEnabled": True, # 是否勾选背景图形"mediaSize": {"height_microns": 297000, "name": "ISO_A4", "width_microns": 210000, "custom_display_name": "A4 210 x 297 mm"}, } co = ChromiumOptions() co.set_argument("--window-size=1920, 1080") co.set_pref('printing.print_preview_sticky_settings.appState', json.dumps(settings)) co.set_pref('savefile.default_directory', r'D:\\') # 修改为网页转PDF后要保存的路径 co.set_argument('--kiosk-printing') # 静默打印,无需用户点击打印页面的确定按钮 print(co.preferences) browser = ChromiumPage(co) browser.get("https://www.baidu.com/") browser.run_js(f'document.title="{browser.title}";window.print();', timeout=6) # 利用js修改网页的title,该title最终就是PDF文件名,利用js的window.print可以快速调出浏览器打印窗口,避免使用热键ctrl+P- 参考文章
https://www.cnblogs.com/caroline2016/p/18348831
https://shandianchengzi.blog.csdn.net/article/details/137883196 调用浏览器打印机,另存为pdf co.set_argument("--print-to-pdf") co.set_pref("download.prompt_for_download", False) co.set_pref('plugins.always_open_pdf_externally', False) co.set_pref('plugins.plugins_disabled', ["Chrome PDF Viewer"]) co.set_pref('profile.default_content_settings.popups', 0) co.set_pref('directory_upgrade', True) co.set_argument('--enable-print-browser') browser.run_js("return window.print()", timeout=6) """
