python下载豆丁网文档
豆丁网文档有自己的格式(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下载豆丁网文档相关推荐
- 几个可以免费下载知网文档,和查重的网站
前一段时间小七分享过几个免费下载知网,万方等一下写论文下载文献的方法,当时有小伙伴在后台询问有没有论文免费查重的方法,其实小七手里面有几个可以免费查看论文权重的软件,但是小七却没有分享,因为这些软件都 ...
- 雨听 | 米铺网-文档下载
前言 很多的小伙伴使用百度的时候会发现,一些文档下载需要开通VIP才可以下载.那么有什么好用的网站可以免费下载呢?[同学推荐给海轰的] 米铺网 目前可以下载一些只需要下载券的文档,需要付费的文档还是不 ...
- java官网下载离线api文档地址
java官网下载离线api文档地址 看到很多人在csdn资源区放着自己下载过的jdk和java离线文档,很是气愤,很多人只是没找到官网的下载位置,这种免费的东西你也好意思收50C币,甚至有的还要钱,这 ...
- python数据采集6-读取文档
文章目录 python数据采集6-读取文档 文档编码 纯文本 CSV PDF 微软Word和.docx python数据采集6-读取文档 有种观点认为,互联网基本上就是那些符合新式 Web 2.0 潮 ...
- 用Python实现Word多文档合并
用Python实现Word多文档合并 1.使用python-docx和docxcompose扩展库 2.doc另存为docx 3.发布EXE 4.爬坑 爬坑1:打开rtf或doc时避免弹出 爬坑2:另 ...
- Go语言从入门到规范-1.1、Go语言官网文档大纲及环境搭建
Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 文章目录 Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 前言 一.go简介及学习路径 二.安装go 1.下载Go发行版 2 ...
- Python: 用于计算txt文档的字数的小脚本
在一次实践中,需要计算txt文档(英文和数字)的字数,并且还要统计路径下的所有txt文档的字数总数. 本来以为很简单,但是在编写的过程中还是出现了一些问题. 首先就是,字数和字符数是不一样的,不能简单 ...
- AFNetworking官网文档及翻译
AFNetworking2.4.1解析 1.官网文档外加点中文注释 AFNetworking官网(点击进入) AFNetworking翻译注释 Architecture(结构) NSURLConnec ...
- php如何将文档转成flas,PHP_PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash),本文实例讲述了PHP实现仿百度 - phpStudy...
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash) 本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的 ...
最新文章
- bnuoj 1065 简单的问题(位运算)
- 深度学习(31)随机梯度下降九: Himmelblau函数优化实战
- cesium面板动态显示并跟随移动
- linux中网页播放音乐,Linux_在Linux系统下播放网页中的背景音乐技巧,在Linux中的firefox浏览许多网页 - phpStudy...
- oracle对象依赖关系图,Oracle concepts 学习笔记(4)——Schema对象间的依赖关系
- SQL Server分组查询某最大值的整条数据(包含linq写法)
- mysql中find_in_set()函数的使用(转载)
- paip.php 配置ZEND DEBUGGER 断点调试for cli..
- SVN删除或新建(添加)文件
- c语言必背入门代码百度云,c语言初学必背代码资料.doc
- 百度拓展数字藏品多元发展
- 【开源】百度中文依存句法分析工具DDParser重磅开源,快来体验一下吧
- 飞鱼星测试软件,飞鱼星VE984GW+
- 仿Excel冻结单元格效果
- Zbrush 4R7 P3中给类模型怎么快速隐藏
- maven 多模块项目如何导入其他模块的第三方 jar 包
- weblogic 与 tuxedo 互联 wtc
- jarvis OJ web babyphp
- 加密锁收集C2V文件更新文件
- 7-4 Swan学院社团招新 (20 分)