吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4858|回复: 21
收起左侧

[Python 转载] 爬取某开放出版社的原版书籍并保存为pdf

  [复制链接]
创造太阳 发表于 2020-3-2 22:46
不少朋友最近在考虑如何将出版社的书进行爬取下载,因此就分享一下自己的思路和代码。
主要是运用python+selenium来实现,通过模拟访问来打开页面,之后进行截图,点击下一页,再截图,进行循环,之后再拼接所有图片为pdf。
代码仅限于研究交流,需要具备一定的python和selenium的知识,修改关键信息才不会报错。
代码如下:
[Python] 纯文本查看 复制代码
import math
import operator
from functools import reduce
from selenium import webdriver
import json
from PIL import Image
import time
import glob
import os
import fitz

"""定义图片合成为pdf"""
def pic2pdf(img_dir,name):
    doc = fitz.open()
    for img in sorted(glob.glob("{}/*".format(img_dir))):
        print(img)
        imgdoc = fitz.open(img)
        pdfbytes = imgdoc.convertToPDF()
        imgpdf = fitz.open("pdf", pdfbytes)
        doc.insertPDF(imgpdf)
    if os.path.exists(name + ".pdf"):
        os.remove(name + ".pdf")
    doc.save(img_dir + "/" + name + ".pdf")
    doc.close()



"""爬取网页并保存为图片"""
def pqts(url,name):
    chromedriver = 'chromedriver.exe'
    chome_options = webdriver.ChromeOptions()
    wd = webdriver.Chrome(chromedriver, chrome_options=chome_options)
    wd.delete_all_cookies()
    wd.maximize_window()
    wd.implicitly_wait(30)
    wd.get("[url=http://www.sklib.cn/]http://www.sklib.cn/[/url]")
    print("访问页面!")
#自动输入账号密码
    print("登陆成功!")
    time.sleep(10)
    cookies = wd.get_cookies()
    print (type(cookies))
    f1 = open('cookie.txt', 'w')
    f1.write(json.dumps(cookies))
    f1.close
    f1 = open('cookie.txt')
    cookie = f1.read()
    cookie =json.loads(cookie)
    for c in cookie:
        wd.add_cookie(c)
    time.sleep(15)
    print("开始寻找!")
    print(name)
    print(url)
    wd.get(url)
    print("访问成功!")
    element = wd.find_element_by_class_name("原版阅读")
    element.click()
    print("打开成功!")
    time.sleep(10)
    try:
        element = wd.find_element_by_id("下一页")
        dir_name = name
        if not os.path.exists(dir_name):
            os.mkdir(dir_name)
        new_name = dir_name + "1"
        if not os.path.exists(new_name):
            os.mkdir(new_name)
        for i in range(1,2000):
            time.sleep(5)
            print("保存第" + str(i) + "页")
            wd.save_screenshot(dir_name + '/' + str(i) + '.png')
            element.click()
            ran = Image.open(dir_name + '/' + str(i) + '.png')
            box = (左,上,右,下) 
            if i < 10:
                ran.crop(box).save(new_name + '/' + "00" + str(i) + '.png')
            if 10 <= i < 100:
                ran.crop(box).save(new_name + '/' + "0" + str(i) + '.png')
            if i > 100:
                image1 = Image.open(dir_name + '/' + str(i - 1) + '.png')
                image2 = Image.open(dir_name + '/' + str(i) + '.png')
                h1 = image1.histogram()
                h2 = image2.histogram()
                result = math.sqrt(reduce(operator.add, list(map(lambda a, b: (a - b) ** 2, h1, h2))) / len(h1))
                if result == 0.0:
                    break
                else:
                    ran.crop(box).save(new_name + '/' + str(i) + '.png')
        wd.close()
        wd.quit()
    except Exception as e:
        print(url)
        print(e)
        wd.close()
        wd.quit()
        with open ("失败网址.txt","a") as sb:
            sb.write(url + "\n")
    wd.close()
    wd.quit()


if __name__ == '__main__':
    url = ""
    name = ""
    pqts(url,name)
    new_name = name + "1"
    pic2pdf( "/" + new_name,name)

免费评分

参与人数 13吾爱币 +11 热心值 +12 收起 理由
平凡路 + 1 + 1 谢谢@Thanks!
徐进勇 + 1 + 1 谢谢@Thanks!
行者悠然 + 1 谢谢@Thanks!
林楠杰 + 1 用心讨论,共获提升!
wale + 1 + 1 谢谢@Thanks!
mikeee + 1 + 1 用心讨论,共获提升!
我乃小明 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Coptis_china + 1 谢谢@Thanks!
爱奴 + 1 + 1 我很赞同!
上将无双 + 1 女朋友不见了?
bupt_lizhicheng + 1 + 1 用心讨论,共获提升!
笙歌泪 + 1 + 1 谢谢@Thanks!
注册码19 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 创造太阳 发表于 2020-3-2 23:29
bupt_lizhicheng 发表于 2020-3-2 23:15
我见到过一个网挣网盘的图书馆,目录和这个网站的一模一样,想来是从这个网站爬的
大佬有没有这个出版社的 ...

这里面的书很枯燥,没什么人看,大部分都是学术研究用的。疫情期间出版社能共享出来资源已经很不错了,大量搞人家的书不太好。
bupt_lizhicheng 发表于 2020-3-2 23:37
创造太阳 发表于 2020-3-2 23:29
这里面的书很枯燥,没什么人看,大部分都是学术研究用的。疫情期间出版社能共享出来资源已经很不错了,大 ...

是这样的,只会找找有没有现有的,不会大量爬书的
头像被屏蔽
那年听风 发表于 2020-3-2 22:59
笙歌泪 发表于 2020-3-2 23:03
谢谢你的分享
xztyx 发表于 2020-3-2 23:08
正在学习python~~,研究下~!
bupt_lizhicheng 发表于 2020-3-2 23:15
我见到过一个网挣网盘的图书馆,目录和这个网站的一模一样,想来是从这个网站爬的
大佬有没有这个出版社的电子书的网盘链接
月月月月 发表于 2020-3-2 23:17
看看,研究一下
rose521rain 发表于 2020-3-2 23:39
感谢楼主分享
Zhuzhu2003 发表于 2020-3-2 23:45
终于看到你用代码实现了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 02:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表