用python下载百度文库的代码

先去下载一个叫SWFToImage.dll的东西
再建立一个bat文件,并运行:


代码如下:

COPY SWFToImage.dll %windir%\system32
regsvr32 %windir%\system32\SWFToImage.dll

代码如下:

#用python下载百度文库的代码,需要的同志请修改,下面有提示
#http://www.cnblogs.com/dearplain/
#code by plain
import urllib2
import win32com.client
import os
import sys

if __name__=='__main__':
#os.system('');
os.chdir('D:\my project\pywenku')#保存到哪个文件夹
SWFToImage=win32com.client.Dispatch("{479A1AAC-C148-40BB-9868-A9773DA66AF9}");
'''
allfile=os.listdir(".")
findrecord=0
for file in allfile:
if file==".record":
record=open(file,'rw')
findrecord=1
break
if findrecord==0:
record=open('.record','w')
'''
#url="http://wenku.baidu.com/view/8d3ed840be1e650e52ea9938.html?from=rec&pos=1&weight=2&lastweight=2&count=5"
#url="http://wenku.baidu.com/view/f2fe7a3987c24028915fc37a.html?from=related&hasrec=1"
#url就是你要下载的文档的地址
url=sys.argv[1]
if url.find("http://")!=0:
print "error! the url is not correct"
sys.exit()
print "downloading %s"%url
try:
urlReferer=url[url.index('http'):url.index('/v')]
print urlReferer
#urlbody=url[url.index('/v')-1:]
urlnum=url[url.index('ew/')+3:url.index('.htm')]
except ValueError:
print "parse url error"
sys.exit()
#print urlnum
wenku='wenku.baidu.com'
reurl='/play/'
pagefrom='?pn='
downnum='&rn='
#try to get title and make dir
req=urllib2.Request(url)
res=urllib2.urlopen(req)
data=res.read()
try:
sfrom=data.index('<title>')+len('<title>')
#print sfrom
sbefore=sfrom+data[sfrom:].index('</title>')
#print sbefore
title=data[sfrom:sbefore]
title=title[:title.rindex('_')]
print 'downloading '+title
except ValueError:
print "get title error"
sys.exit()
allfile=os.listdir(".")
if (title in allfile)==False:
os.mkdir(title)
os.chdir('./'+title)
#get the first swf
req=urllib2.Request('http://wenku.baidu.com'+reurl+urlnum+pagefrom+'1'+downnum+'1')
req.add_header("Referer", urlReferer )
res=urllib2.urlopen(req)
data=res.read()
res.close()
head=data[0:45]
pagenum=0
sfrom=head.index('\":\"')+len('\":\"')
sbefore=sfrom+head[sfrom:].index('\"')
pagenum=int(head[sfrom:sbefore])
print 'pagenum:'+str(pagenum)
if pagenum<=0 or pagenum>2000:
print "error!!!pagenum<0 or pagenum>2000"
sys.exit()
data=data[106:]

swf=open("1.pywenku",'wb')
swf.write(data)
swf.close()
i=1
SWFToImage.InputSWFFileName="%d.pywenku"%i
SWFToImage.ImageOutputType = 1
SWFToImage.ImageWidth=1048
SWFToImage.ImageHeight=1478
SWFToImage.Execute_Begin()
SWFToImage.FrameIndex = 1
SWFToImage.Execute_GetImage()
SWFToImage.SaveToFile("%d.jpg"%i)
SWFToImage.Execute_End()
os.rename("%d.pywenku"%i,"%d.swf"%i)
allfile=os.listdir(".")
#从第二页下到最后一页
for i in range(2,pagenum+1):

if '%d.swf'%i in allfile:
continue
#not find in the dir mean
req=urllib2.Request('http://wenku.baidu.com'+reurl+urlnum+pagefrom+str(i)+downnum+'1')
res=urllib2.urlopen(req)
data=res.read()
data=data[106:]
swf=open("%d.pywenku"%i,'wb')
swf.write(data)
swf.close()
SWFToImage.InputSWFFileName="%d.pywenku"%i
SWFToImage.ImageOutputType = 1
SWFToImage.Execute_Begin()
SWFToImage.FrameIndex = 1
SWFToImage.Execute_GetImage()
SWFToImage.SaveToFile("%d.jpg"%i)
SWFToImage.Execute_End()
os.rename("%d.pywenku"%i,"%d.swf"%i)
res.close()
print 'task complete'

(0)

相关推荐

  • java实现附件预览(openoffice+swftools+flexpaper)实例

    本文主要介绍了java实现附件预览,需要用到openoffice.SWFTools.FlexPaper,具体步骤如下: 1.概述 主要原理 1.通过第三方工具openoffice,将word.excel.ppt.txt等文件转换为pdf文件 2.通过swfTools将pdf文件转换成swf格式的文件 3.通过FlexPaper文档组件在页面上进行展示 2.安装包下载 1.openoffice是Apache下的一个开放免费的文字处理软件 下载地址:Apache oppenoffice 官网下载 版

  • 将word转化为swf 如同百度文库般阅读实现思路及代码

    复制代码 代码如下: <SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">实现如同百度文库那样类似功能需要进行一系列转化,一般流程想将word转化为pdf格式,再将pdf格式转化为swf格式.在网页上显示其实都是swf格式内容.</SPAN> 首先将word转化为swf,需要调用com组件,可以通过office 或者wps进行转化,但我尝试都没有成功,最后通过OpenOffice 4.0.0 进行转化才

  • PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)

    本文实例讲述了PHP实现仿百度文库,豆丁在线文档效果.分享给大家供大家参考,具体如下: 由于项目要实现类似百度文库的功能,又是我一个人做的项目,所以就想到找免费的现成的来使用.在网上找到的都是一样的.如下: Flash Paper支持Office文档(.doc,.xls,.ppt)直接转换为PDF或SWF,速度很快,效果较好.可惜,Flash Paper V2.2后没有再更新了.安装Flash Paper后,可以直接使用命令调用FlashPrinter.exe,实现批量转换. 例如:C:\Fla

  • JS实现仿百度文库评分功能

    百度文库分享平台大家都知道,今天小编通过一段实例代码给大家介绍基于js实现百度文库评分功能,先给大家展示效果图吧. 具体代码如下所示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/

  • pdf2swf+flexpapers实现类似百度文库pdf在线阅读

    1:工具准备 swftools.exe 下载 http://www.swftools.org/download.html 安装至D盘 SWFTools提供了一系列将各种文件转成swf的工具: font2swf.exe gif2swf.exe jpeg2swf.exe pdf2swf.exe png2swf.exe wav2swf.exe 这里我们只使用pdf2swf.exe flexpaper下载 http://code.google.com/p/flexpaper/ 这里我们使用已经编译好的F

  • js仿淘宝和百度文库的评分功能

    本文实例为大家分享了类似于淘宝和百度文库的评分功能,js实现,供大家参考,具体内容如下 效果如图: 五个五角星分别放在了一个table的五列中.下面是一个<p>,用来显示评分结果的:代码如下: <body onload="changebg()"> <table border="0" align="center" cellpadding="0" cellspacing="0" i

  • Java仿文库的基本方法(openoffice+swftools+flexPaper)

    Java仿文库的基本方法 基本步骤: 1.将要展示的office文件 转换成 PDF,  使用工具 openoffice 2.将PDF文件转换成swf ,实用工具swftools 3.使用flexPaper,显示转换后的swf文件. 基础代码:没有任何校验 1.openoffice转换pdf 下载地址:https://www.openoffice.org/zh-cn/ 实用工具:  jodconverter-2.2.2   引入所需jar,直接将所有jar都扔进来了 首先.下载openOffic

  • 用python下载百度文库的代码

    先去下载一个叫SWFToImage.dll的东西 再建立一个bat文件,并运行: 复制代码 代码如下: COPY SWFToImage.dll %windir%\system32 regsvr32 %windir%\system32\SWFToImage.dll 复制代码 代码如下: #用python下载百度文库的代码,需要的同志请修改,下面有提示 #http://www.cnblogs.com/dearplain/ #code by plain import urllib2 import wi

  • python实现百度文库自动化爬取

    项目介绍 可以下载doc,ppt,pdf.对于doc文档可以下载,doc中的表格无法下载,图片格式的文档也可以下载.ppt和pdf是先下载图片再放到ppt中.只要是可以预览的都可以下载. 已有功能 将可以预览的word文档下载为word文档,如果文档是扫描件,同样支持. 将可以预览的ppt和pdf下载为不可编辑的ppt,因为网页上只有图片,所以理论上无法下载可编辑的版本. 环境安装 pip install requests pip install my_fake_useragent pip in

  • Python下载网络小说实例代码

    看网络小说一般会攒上一波,然后导入Kindle里面去看,但是攒的多了,机械的Ctrl+C和Ctrl+V实在是OUT,所以就出现了此文. 其实Python我也是小白,用它的目的主要是它强大文本处理能力和网络支持,以及许多好用的库,不需要自己造轮子.而且真心比C方便啊(真是用了才知道) 分析要获取的网页 我要获取的主要是3个东西: 文章的标题.<div id="title">正文 第一章 北灵院</div> 文章正文内容.<div id="conte

  • 基于Python下载网络图片方法汇总代码实例

    本文介绍下载python下载网络图片的方法,包括通过图片url直接下载.通过re/beautifulSoup解析html下载以及对动态网页的处理等. 通过pic_url单个/批量下载 已知图片url,例如http://xyz.com/series-*(1,2..N).jpg,共N张图片,其链接形式较为固定,这样经简单循环,直接通过`f.write(requests.get(url).content)'即可以二进制形式将图片写入. import os import requests def dow

  • 使用Python下载Bing图片(代码)

    直接上代码: 复制代码 代码如下: <span style="font-family: arial,helvetica,sans-serif; font-size: 16px;"># -*- coding: cp936 -*-import urllibimport os print 'Download data......'url = 'http://cn.bing.com'urlFile = urllib.urlopen(url)data = urlFile.read()

  • python 爬取百度文库并下载(免费文章限定)

    import requests import re import json import os session = requests.session() def fetch_url(url): return session.get(url).content.decode('gbk') def get_doc_id(url): return re.findall('view/(.*).html', url)[0] def parse_type(content): return re.findall

  • python下载文件记录黑名单的实现代码

    具体代码如下所示: #!/usr/bin/python # -*- coding: GBK -*- # -*- coding: UTF-8 -*- from ftplib import FTP import os import datetime ftp_server = '127.0.0.1' # 对应ftp服务器地址 username = 'ponshine' # 用户名 password = '1qaz2wsx' # 密码 ftp_path = '/GBCC/' # ftp目录 local_

  • Python多线程结合队列下载百度音乐的方法

    本文实例讲述了Python多线程结合队列下载百度音乐的方法.分享给大家供大家参考.具体如下: 一直想做个下载音乐的脚本,后来决定就拿百度音乐开刀,经过多次分析,终于制作了一个下载百度音乐的脚本,目前只默认下载第一页,童鞋们可以自由拓展. 适用Windows和Linux平台.依赖BeautifulSoup这个库,主要对HTML进行解析 #!/usr/bin/python # -*- coding: utf-8 -*- ''' 百度中批量下载某歌手的歌(目前只下载第一页,可以自行拓展) @autho

  • 用python实现百度翻译的示例代码

    用python实现百度翻译,分享给大家,具体如下: 首先,需要简单的了解一下爬虫,尽可能简单快速的上手,其次,需要了解的是百度的API的接口,搞定这个之后,最后,按照官方给出的demo,然后写自己的一个小程序 打开浏览器 F12 打开百度翻译网页源代码: 我们可以轻松的找到百度翻译的请求接口为:http://fanyi.baidu.com/sug 然后我们可以从方法为POST的请求中找到参数为:kw:job(job是输入翻译的内容) 下面是代码部分: from urllib import req

随机推荐