python 下载道客巴巴文档

python 下载道客巴巴文档

环境准备

首先,我们会使用到selenium这个库,直接用pip安装即可,有关于selenium的使用还需要安装浏览器驱动和配置环境变量,在这里就不过多阐述,很多博客中都有教程。

#直接使用pip安装
pip install selenium

其次,我们还需要一个库img2pdf,它可以帮助我们将多张图片合成为pdf,也是直接使用pip安装即可

#直接使用pip安装
pip install img2pdf

案例分析

今天我们的目标是下载道客巴巴中的文档,但是通过网站我们会发现,道客巴巴是通过html5的canvas元素进行各个文档内容的显示,所以,我们没有办法通过获取页面的源代码来进行解析获取图片。

cancas渲染
然后我就想到了使用抓包工具抓取后台返回的图片,很可惜,它返回的是加密文件

在这里插入图片描述在这里插入图片描述
到这里,我就想放弃了,但是我突然灵机一动,js好像可以将canvas转为图片并下载到本地,再利用python调用js实现自动化,最后将下载到本地的图片合成转为pdf,这样子不就可以把文档保存到本地了嘛,说干就干。

下载代码实现

  1. 我们需要将我们需要的库给导入进来,以便后续调用,代码如下
from selenium import webdriver
import os
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
from lxml import etree
  1. 我们需要指定图片的下载地址,这样子才方便后续对图片进行操作,刚好,selenium可以直接实现这样的操作,代码如下
chromeOptions = webdriver.ChromeOptions()
options = Options()
#获取当前的路径,拼接创建一个我们需要指定下载图片的文件夹
path=os.getcwd()+'\data'
#判断文件夹是否存在,不存在创建文件夹
is_exists = os.path.exists(path)
if not is_exists:
    os.mkdir(path)
#指定浏览器下载文件夹
prefs = {
   
   "download.default_directory": path}
options.add_experimental_option("prefs", prefs)
  1. 我们在进入页面时,需要获取当前文档共有多少页数,页码数可以在网页源代码中直接找到
    如图

在这里插入图片描述
所以我们直接利用selenium获取当前的网页源代码,使用xpath解析网页源代码获取页码数

#目标网址
url="https://www.doc88.com/p-549550988532.html"
browser.get(url)
#获取网页源代码
text=browser.page_source
html=etree.HTML(text)
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xintgong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值