selenium库实现批量爬取网页文章得到PDF

引流博客 (https://ph0ebus.github.io/)

实现目的

利用python的selenium库实现批量网站打印为PDF

预备知识
  1. selenium库的简单了解
  2. 浏览器的启动参数
  3. re库函数了解(re.complie, re.findall)
  4. js调用浏览器窗口
代码实现
import json
import re
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--enable-print-browser')  # 启用PrintBrowser模式,其中所有内容都呈现为打印
chrome_options.add_argument('--kiosk-printing')  # 在打印预览中自动按下打印按钮
settings = {
    "recentDestinations": [
    {
        "id": "Save as PDF",
        "origin": "local"
    }
    ],
    "selectedDestinationId": "Save as PDF",
    "version": 2
}
prefs = {
    'printing.print_preview_sticky_settings.appState': json.dumps(settings),
    'savefile.default_directory': 'C:\\Users\\admin\\Desktop\\pdf'  # 下载文件保存的路径
}
chrome_options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(options=chrome_options)
for num in range(1,1854):
    url = 'https://tttang.com/archive/%d/'%num  # 通过对网站url特点分析,遍历出每篇文章,也可以通过其他特点遍历出各分类的文章
    driver.get(url)
    a = driver.page_source  # 获取网页源代码
    if '404 not found' not in a and '点击跳转' not in a:  # 防止无效的404页面
        title1 = re.compile("<title>(.*)</title>")  # 通过正则表达式定位到文章标题
        title = title1.findall(a)[0][:-6]  # 切片去除无意义的后缀
        js = "document.title='"+title+"';window.print();"  # 保存文件的文件名是文章标题,使用js的window.print()调出打印窗口,避免使用ctrl+P
        driver.execute_script(js)
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值