Python 下载百度文库

下面展示一些 内联代码片

import requests
from selenium import webdriver
from lxml import etree
import re
from selenium.webdriver.common.keys import Keys
import time
from PIL import Image
import os
from bs4 import BeautifulSoup
import bs4
from docx import Document
import sysdef getHTMLText(url):header = {'User-agent': 'Googlebot'}try:r = requests.get(url, headers = header, timeout = 30)r.raise_for_status()r.encoding = 'gbk'# r.encoding = r.apparent_encodingreturn r.textexcept:return ''def parse_type(content):return re.findall(r"docType.*?\:.*?\'(.*?)\'\,", content)[0]def parse_txt(html): #解析网页源代码plist = []soup = BeautifulSoup(html, "html.parser")plist.append(soup.title.string)for div in soup.find_all('div', attrs={"class": "bd doc-reader"}):plist.extend(div.get_text().split('\n'))plist = [c.replace(' ', '') for c in plist]plist = [c.replace('\x0c', '') for c in plist]return plistdef print_docx(plist, filename):  #读取文档file = open(filename + '.txt', 'w',encoding='utf-8')for str in plist:file.write(str)file.write('\n')file.close()with open(filename + '.txt', encoding='utf-8') as f:docu = Document()docu.add_paragraph(f.read())docu.save(filename + '.docx')def parse_doc(url, folderPath):driver = webdriver.Chrome(r'./src/chromedriver.exe')driver.get(url)# 找到‘继续阅读’按钮  定位至<span class="moreBtn goBtn"><span>还剩35页未读,</span><span class="fc2e">继续阅读</span></span>button = driver.find_element_by_xpath("//*[@id='html-reader-go-more']/div[2]/div[1]/span")# 按下按钮driver.execute_script("arguments[0].click();", button)time.sleep(1)source = re.compile(r'<span class="page-count">/(.*?)</span>')number = int(source.findall(driver.page_source)[0])# 获取页码数# number = total[1]time.sleep(1)for i in range(2,number):driver.find_element_by_class_name("page-input").clear()driver.find_element_by_class_name("page-input").send_keys(f'{i}')driver.find_element_by_class_name("page-input").send_keys(Keys.ENTER)time.sleep(1)html=etree.HTML(driver.page_source)# 找到picture容器links=html.xpath("//div[@class='reader-pic-item']/@style")# 找到图片对应的urlpart = re.compile(r'url[(](.*?)[)]')qa="".join(links)z=part.findall(qa)if i == 2:for m in range(3):pic = requests.get(z[m]).contentwith open(f'./照片/{m+1}.jpg','wb') as f:f.write(pic)f.close()else:pic = requests.get(z[2]).contentwith open(f'./照片/{i+1}.jpg','wb') as f:f.write(pic)f.close()time.sleep(1)driver.quit()def parse_other(url, folderPath):driver = webdriver.Chrome(r'./src/chromedriver.exe')driver.get(url)# 找到‘继续阅读’按钮  定位至<span class="moreBtn goBtn"><span>还剩35页未读,</span><span class="fc2e">继续阅读</span></span>button = driver.find_element_by_xpath("//*[@id='html-reader-go-more']/div[2]/div[1]/span")# 按下按钮driver.execute_script("arguments[0].click();", button)time.sleep(1)source = re.compile(r'<span class="page-count">/(.*?)</span>')number = int(source.findall(driver.page_source)[0])# 获取页码数# number = total[1]time.sleep(1)# 获取图片for i in range(2,number):driver.find_element_by_class_name("page-input").clear()driver.find_element_by_class_name("page-input").send_keys(f'{i}')driver.find_element_by_class_name("page-input").send_keys(Keys.ENTER)time.sleep(1)html=etree.HTML(driver.page_source)# 找到picture容器"//div[@class='reader-pic-item']/@style"z=html.xpath('//div[@class="ppt-image-wrap"]/img/@src')# print(z)# 保存图片if i == 2:for m in range(3):pic = requests.get(z[m]).contentwith open(folderPath + f'/{m + 1}.jpg','wb') as f:f.write(pic)f.close()else:pic = requests.get(z[i]).contentwith open(folderPath + f'/{i + 1}.jpg','wb') as f:f.write(pic)f.close()time.sleep(1)driver.quit()def print_pdf(folderPath, filename):files = os.listdir(folderPath)jpgFiles = []sources = []for file in files:if 'jpg' in file:jpgFiles.append(file)tep = []for i in jpgFiles:ex = i.split('.')tep.append(int(ex[0]))tep.sort()jpgFiles=[folderPath +'/'+ str(i) + '.jpg' for i in tep]output = Image.open(jpgFiles[0])jpgFiles.pop(0)for file in jpgFiles:img = Image.open(file)img = img.convert("P")sources.append(img)output.save(f"{filename}.pdf","PDF",save_all=True,append_images=sources)from datetime import datetime
def main(url, istxt):try:ticks = time.time() # 获取时间(用于命名文件夹)filepath = './照片' + str(ticks) # 保存爬取的图片filename = './爬取结果' + str(ticks) # 爬取生成的文件名ticks = datetime.now().strftime('%F')filepath = os.getcwd()+'./照片' + str(ticks) # 保存爬取的图片filename = os.getcwd()+'./爬取结果' + str(ticks) # 爬取生成的文件名if not os.path.exists(filepath): # 新建文件夹os.mkdir(filepath)html = getHTMLText(url) # requests库爬取type = parse_type(html) # 获取文库文件类型:ppt, pdf, docx# 当你要爬取文档的文本时,打开下列注释if(istxt == "1"):type = 'txt'if type == 'txt' :plist = parse_txt(html)print_docx(plist, filename)elif type == 'doc' or type == 'pdf':parse_doc(url, filepath)print_pdf(filepath , filename)else:parse_other(url, filepath)print_pdf(filepath, filename)print('1')except:print('0')if __name__ == '__main__':#main(sys.argv[1],sys.argv[2])url = 'https://wenku.baidu.com/view/b659fbd0e55c3b3567ec102de2bd960590c6d981.html?fr=search'istxt = "1"main(url,istxt)

Python 下载百度文库相关推荐

  1. python下载百度文库,没想到竟如此简单

    源码 二话不说,先上代码 # -*- coding: utf-8 -*- #项目地址:https://github.com/JackKing-defier/Baiduwenku #@author: J ...

  2. 超强下载神器,解决你的文档下载焦虑(下载百度文库)

    大圣文库下载器是一款下载文库资源的软件,它具有强大的下载功能,可以下载百度文库.豆丁文库等文库的资源,而且都是免费下载,不收取任何的积分,让用户轻松下载到自己需要的文库资源.大圣文库下载器的使用方法十 ...

  3. 如何免费下载百度文库文章的三种方法

    百度文库中的资源很丰富,但那里的文章不能复制,而且有的要下载币.给 大家总结下免费下载复制百度文库的三种方法. 第一种 利用百度快照.我们在百度文库中找到自己想要的文章后,直接把那篇文章的地址复制, ...

  4. 利用Python进行百度文库内容爬取(二)——自动点击预览全文并爬取

    本文是衔接上一篇:<利用Python进行百度文库内容爬取(一)>. 上回说到我们在对百度文库进行爬虫时,需要模拟手机端来进行登录,这样固然可以对文章进行爬取,但是很多时候并不是非常智能的翻 ...

  5. 推荐一个免费下载神器!你还在付费下载百度文库、豆丁文档吗?

    推荐一个很厉害的神器:冰点文库助手.它可以免费下载百度文库.豆丁文档.道客巴巴等各种网站几亿份文档!!!甚至大部分付费文档都可以下载!逆天了有没有!电脑下载,把需要下载的文档网址复制到软件的输入框即可 ...

  6. 帅某---技巧---如何免费下载百度文库、豆丁文库等其他文库的vip或者付费文章(不看后悔)?????

    如何免费下载百度文库.豆丁文库等其他文库的vip或者付费文章????? 前些天狂bilibili的一些常识小技巧视频时候发现一个介绍免费试用百度文库.豆丁文库等各种文库各种付费.VIP文章的方法,后来 ...

  7. 免费下载百度文库的资源的解决办法

    首先,下载卷这种东西可以通过做任务获得,当然本文介绍一种免费下载百度文库资源的方式: 1. 打开微信工作号,关注 "文库免费下载"公众号 2. 进入公众号,查看历史消息记录,寻找最 ...

  8. 怎样下载百度文库文章

    百度文库的大部分文章都需要积分才能下载,并且无法复制,那么我们没有积分又想要复制或者下载百度文库的内容怎么办呢? 1.首先我们使用chrome浏览器打开文库地址. 2.然后我们右键选择打印. 然后我们 ...

  9. python可以下载百度文库_百度文库随便下载,解除限制

    阅读须知:文章介绍的软件下载地址载文末,需要复制链接到浏览器打开 今天有小伙伴在群里问有没有百度文库的下载工具,其实之前推荐过,但目前有新的工具出现了,而且更加好用,所以给大家更新一下 百度文档0.9 ...

  10. 不用下载券也能下载百度文库资料,Python帮你轻松搞定

    阅读文本大概需要5分钟. 大家可能平时都有在百度文库下载文档的经历,费尽心思好不容易在文库找了一份可以用的资料,一看需要用下载券下载,搞的人很烦. 有的人为了节省时间,就任性办理了个文库VIP,再也不 ...

最新文章

  1. [APUE]文件和目录(中)
  2. 7小时44分最佳,睡多睡少都不好,养成习惯也没用
  3. python pyside简单布局_python – pyside显示/隐藏布局
  4. linux mode4的双网卡绑定,Linux实现双网卡绑定自动化脚本 | 聂扬帆博客
  5. Knative Service 是如何指定端口和协议的
  6. 滚动插件jQuery Marquee
  7. html 全屏显示某个区域,JS实现指定区域的全屏显示功能示例
  8. 80端口被占用时的终极解决方法
  9. C++ 多线程与并发
  10. python从入门到放弃-《Python3从入门到放弃》视频教程
  11. 6.业务架构·应用架构·数据架构实战 --- 双轮驱动的技术架构设计
  12. Qt Style Sheets Reference Qt css 样式属性列表[官版]
  13. 计算机无法播放flash,电脑中已安装Flash网页视频还是提示未安装Flash播放器怎么办...
  14. grep 查找内容有特殊字符怎么办
  15. 解决安装PyMySQL一直停在Building wheels for collected package:cryptography, cffi, pycparser的问题...
  16. Linux的命令回收站在哪,Trash-Cli:Linux 上的命令行回收站工具
  17. SEM竞价入门的4个基本常识|零基础必看
  18. 高效解决Tomcat控制台以及浏览器打开txt文件乱码问题
  19. leetcode【中等】838、推多米诺
  20. android 4.3 刷机,金立GN9005 Android 4.3-4.4 (S5.1 移动4G)一键救砖教程,轻松刷回官方系统...

热门文章

  1. 百度地图api自定义marker图片不显示问题
  2. 施耐德M241 plc与IAI伺服电缸通过ethernet/ Ip通讯,plc与伺服套装,送软件和资料
  3. DelayQueue用例
  4. 工具 | CAN总线数据采集工具PCAN的使用教程
  5. 使用EEMD时报错:TypeError: ‘module‘ object is not callable
  6. 高校学生就业管理系统
  7. 2019数据安装勾选_勾选方式认证发票你不会?整理了最全的操作流程,快来看看吧...
  8. 软件测试的岗位划分和主要工作内容是怎样的?
  9. 新手入门学Python一定要知道的编程开发工具
  10. IDEA返回上一步和下一步快捷键无效:Ctrl+Alt+左箭头 Ctrl+Alt+右箭头