豆丁网文档有自己的格式(docin),,所以需要下载下来后再解密。。。。

common.py文件在http://blog.csdn.net/qq506657335/article/details/20004903

docinDownloader.py

import re;
import os;
import common;
import docinParse;reg_getDocinPageID = re.compile("http://www\.docin\.com/p-(\d+)\.htm");def getPageID(url):try:return reg_getDocinPageID.findall(url)[0];except:return None;class docinDownloader():def __init__(self):pass;def download(self, url, savePath = "./tmpDocin"):common.createDir(savePath);self._pageID = getPageID(url);self._title = common.getTitle(url).replace(" - 豆丁网", "");for i in range(1, 100):  #具体也不知道会有多少个文件, 所以只能一个个判断。。filename = "{0}/{1}_{2}.docin".format(savePath, self._title, i);if(i == 1):common.urlDownloadToFile("http://221.122.117.125/docin_{0}.docin".format(self._pageID), filename);else:common.urlDownloadToFile("http://221.122.117.125/docin_{0}_{1}.docin".format(self._pageID, i), filename);#测试了一下。。发现如果请求的文件不存在则会返回一个包含ERROR字符的文档或者空文档。。#所以这里的1024其实有点大。。。if(os.path.getsize(filename) < 1024):   os.remove(filename);return;def main():downloader = docinDownloader();downloader.download("http://www.docin.com/p-760258140.html&ccid=100003");if(__name__ == "__main__"):main();

docinParse.py

"""参考:http://blog.csdn.net/lin379184514/article/details/5305061  #mfc版本http://blog.csdn.net/kowity/article/details/6342925        #python版本(主要参考)http://blog.sina.com.cn/s/blog_6859df370100wsv2.html       #swf文件格式http://blog.csdn.net/jgood/article/details/4608546         #zlib用法
"""import struct;
import zlib;
import common;def getDocinDocInfo(url):docID = reg_getDocinDocID.findall(url)[0];docName = reg_getDocTitle.findall(urllib.request.urlopen(url).read().decode())[0];return docID, docName;class docinParse():def __init__(self):#这几个数值参考:http://blog.sina.com.cn/s/blog_6859df370100wsv2.htmlself._swfCommon = struct.pack('bbbb', 0x46, 0x57, 0x53, 9);def _getSwfInfo(self, docinFile):self._swfWidth = struct.unpack("i", docinFile.read(4))[0];  #获取swf文件的宽度self._swfHeight = struct.unpack("i", docinFile.read(4))[0]; #获取swf文件的高度self._swfPages = struct.unpack("i", docinFile.read(4))[0];  #获取swf文件的页度self._swfHeaderLength = struct.unpack("i", docinFile.read(4))[0];#获取swf文件头的长度def parse(self, filename, startIndex = 1, savePath = "./tmpSwf"):common.createDir(savePath);docinFile = open(filename, "rb");self._getSwfInfo(docinFile);swfHeader = zlib.decompress(docinFile.read(self._swfHeaderLength));for page in range(startIndex, startIndex + self._swfPages):byteBodyLen = docinFile.read(4);"""文档若是超过50页, 则会被分成N部分, 每部分50页,(一个文件最多只有50页)所以需要判断是否为空."""if(byteBodyLen == b""):  return;bodyLen = struct.unpack("i", byteBodyLen)[0];swfBody = zlib.decompress(docinFile.read(bodyLen));swf = swfHeader + swfBody;file = open("{0}/{1}.swf".format(savePath, page), "wb");file.write(self._swfCommon + struct.pack("i", len(swf)) + swf);file.close();def main():docinParser = docinParse();docinParser.parse("docin_760258140.docin");if(__name__ == "__main__"):main();

过程截图就不发了。。。

python下载豆丁网文档相关推荐

  1. 几个可以免费下载知网文档,和查重的网站

    前一段时间小七分享过几个免费下载知网,万方等一下写论文下载文献的方法,当时有小伙伴在后台询问有没有论文免费查重的方法,其实小七手里面有几个可以免费查看论文权重的软件,但是小七却没有分享,因为这些软件都 ...

  2. 雨听 | 米铺网-文档下载

    前言 很多的小伙伴使用百度的时候会发现,一些文档下载需要开通VIP才可以下载.那么有什么好用的网站可以免费下载呢?[同学推荐给海轰的] 米铺网 目前可以下载一些只需要下载券的文档,需要付费的文档还是不 ...

  3. java官网下载离线api文档地址

    java官网下载离线api文档地址 看到很多人在csdn资源区放着自己下载过的jdk和java离线文档,很是气愤,很多人只是没找到官网的下载位置,这种免费的东西你也好意思收50C币,甚至有的还要钱,这 ...

  4. python数据采集6-读取文档

    文章目录 python数据采集6-读取文档 文档编码 纯文本 CSV PDF 微软Word和.docx python数据采集6-读取文档 有种观点认为,互联网基本上就是那些符合新式 Web 2.0 潮 ...

  5. 用Python实现Word多文档合并

    用Python实现Word多文档合并 1.使用python-docx和docxcompose扩展库 2.doc另存为docx 3.发布EXE 4.爬坑 爬坑1:打开rtf或doc时避免弹出 爬坑2:另 ...

  6. Go语言从入门到规范-1.1、Go语言官网文档大纲及环境搭建

    Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 文章目录 Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 前言 一.go简介及学习路径 二.安装go 1.下载Go发行版 2 ...

  7. Python: 用于计算txt文档的字数的小脚本

    在一次实践中,需要计算txt文档(英文和数字)的字数,并且还要统计路径下的所有txt文档的字数总数. 本来以为很简单,但是在编写的过程中还是出现了一些问题. 首先就是,字数和字符数是不一样的,不能简单 ...

  8. AFNetworking官网文档及翻译

    AFNetworking2.4.1解析 1.官网文档外加点中文注释 AFNetworking官网(点击进入) AFNetworking翻译注释 Architecture(结构) NSURLConnec ...

  9. php如何将文档转成flas,PHP_PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash),本文实例讲述了PHP实现仿百度 - phpStudy...

    PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash) 本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的 ...

最新文章

  1. bnuoj 1065 简单的问题(位运算)
  2. 深度学习(31)随机梯度下降九: Himmelblau函数优化实战
  3. cesium面板动态显示并跟随移动
  4. linux中网页播放音乐,Linux_在Linux系统下播放网页中的背景音乐技巧,在Linux中的firefox浏览许多网页 - phpStudy...
  5. oracle对象依赖关系图,Oracle concepts 学习笔记(4)——Schema对象间的依赖关系
  6. SQL Server分组查询某最大值的整条数据(包含linq写法)
  7. mysql中find_in_set()函数的使用(转载)
  8. paip.php 配置ZEND DEBUGGER 断点调试for cli..
  9. SVN删除或新建(添加)文件
  10. c语言必背入门代码百度云,c语言初学必背代码资料.doc
  11. 百度拓展数字藏品多元发展
  12. 【开源】百度中文依存句法分析工具DDParser重磅开源,快来体验一下吧
  13. 飞鱼星测试软件,飞鱼星VE984GW+
  14. 仿Excel冻结单元格效果
  15. Zbrush 4R7 P3中给类模型怎么快速隐藏
  16. maven 多模块项目如何导入其他模块的第三方 jar 包
  17. weblogic 与 tuxedo 互联 wtc
  18. jarvis OJ web babyphp
  19. 加密锁收集C2V文件更新文件
  20. 7-4 Swan学院社团招新 (20 分)

热门文章

  1. 从没钱营销到全球追捧,这个品牌究竟厉害在哪里?
  2. 图像空域增强技术及联合运用
  3. 3D渲染软件综合介绍
  4. 精细化营销和客户分群
  5. 水煮三国第二章:能把梳子卖给和尚吗?
  6. 森林门前的小路用计算机弹奏歌曲,森林外的小路看花香漫步什么歌
  7. 软考系统集成项目管理工程师视频教程(下)-乔俊峰-专题视频课程
  8. 地狱模式的居转户记录 02
  9. 专访阿里云闵万里:云上逐鹿,ET大脑要做行业化、垂直化的创新运用
  10. [18] Window PowerShell DSC学习系列---- 如何区分WMF4.0和WMF 5.0?