2005年08月25日 星期四 15:11
我测试了一下。有以下两个问题: 1) 在下载到28版时就一直等待(不知道是不是在调用merge()方法进行合并)。 2) 中途如果出了问题,进程被杀死,就需要重新运行、下载,可是这时会将文件夹中已经下好的全清空!多可惜啊! 这样也浪费了用户的时间。 在05-8-25,Wang Kebo <mep_ at 163.com> 写道: > > 《新京报》和《南方都市报》都是当天就将其电子版本上网。 > 电子版为pdf格式,每个版面为一个文件 > 我写一个小脚本,自动从网络上下载报纸的所有版面,解密、并合并成单个的pdf文 > 件。 > 也可以指定下载任意一天的报纸。 > 这个脚本依赖于pdf解密和合并工具, > 解密工具我使用了verypdf的pdfdecrypt,而合并工具为mbtPdfAsm.exe > 另外,文件操作都是指定目录的 > > Note:我试用过很多pdf合并工具,包括verypdf的(报纸好像就是用verypdf的工具生 > 成, > 用Ultraedit打开pdf可以在前几行看到这个单词),没有一个能够常年不出错的合并所 > 有的pdf, > 说不定哪天就有问题:(,如果有好的pdf合并工具,给我推荐一下。 > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>> > #!/usr/bin/env python > # -*- coding: cp936 -*- > > import fileinput > import re > import os > import urllib > import httplib > from HTMLParser import HTMLParser > import string > import sys > import datetime > > global prefix0, prefix1, url, target > > prefix0 = 'www.nanfangdaily.com.cn <http://www.nanfangdaily.com.cn>' > prefix1 = '/southnews/pdf/' > url = > ' > http://www.nanfangdaily.com.cn/southnews/pdf/viewpdf.asp?sYear=%(y)d&sMonth; > =%(m)d&sDate;=%(d)d&sPaper;=xjb' > temp = 'C:\\Temp\\xjb\\' > target = 'XJB-%(y)d-%(m)d-%(d)d.pdf' > > global links, files > files = [] > links = [] > names = [] > > class MyParser(HTMLParser): > > def handle_starttag(self, tag, attrs): > > if tag == 'a': > for i in range(len(attrs)): > (name, value) = attrs[i] > if name == 'href': > filename = prefix1 + value > links.append(filename) > > filepattern = re.match('(\w)+/(\w)+/(?P(\w)+)', > value) > > if filepattern == None: > print '天哪!' > sys.exit(-1) > files.append(filepattern.group('name') + '.pdf') > names.append(filepattern.group('name')) > > def handle_endtag(self, tag): > pass > > def download(link, filename, value): > print value + '版' > > conn = httplib.HTTPConnection(prefix0) > conn.request('GET', link) > > r1 = conn.getresponse() > print '\tConnection Status...', > print r1.status, r1.reason > > print '\t正在下载...', > > myfile = file(filename, 'w+b') > data1 = r1.read() > myfile.write(data1) > myfile.close() > > print 'done' > > #Decryption > print '\t正在解密...', > os.system('pdfdecrypt -i %s' % filename) > print 'done' > print value + '版完成\n' > > def getlink(): > f = urllib.urlopen(today) > parser = MyParser() > parser.feed(f.read()) > > f.close() > parser.close() > > if len(links) len(files): > print '天哪!' > sys.exit(-1) > > if len(links) == 0: > print '抱歉!您要求的报纸还没有排好' > sys.exit(-1) > > for i in range(len(links)): > filename = temp + files[i] > download(links[i], filename, names[i]) > > def merge(): > #os.system('pdfpg C:\\Temp\\xjb\\*.pdf G:\\' + targetfile) > #os.system('pdftk C:\\Temp\\xjb\\*.pdf cat output G:\\' + targetfile) > > myfile = file('C:\\Temp\\xjb\\pdfscript', 'w+b') > for f in files: > myfile.write('C:\\Temp\\xjb\\%s *\n' % f) > > myfile.close() > os.system('mbtPdfAsm -dG:\\%s -sC:\\Temp\\xjb\\pdfscript' % targetfile) > > def clean(): > os.system('del /Q C:\\Temp\\xjb\\*.pdf') > os.system('del /Q C:\\Temp\\xjb\\*.bak') > os.system('del /Q C:\\Temp\\xjb\\pdfscript') > > def main(): > """usage: > xjb YEAR MONTH DAY > or > xjb""" > > if (len(sys.argv) 4) and (len(sys.argv) 1): > print main.__doc__ > sys.exit(-1) > > aday = datetime.date(2004, 1, 1) > now = aday.today() > year = now.year > month = now.month > day = now.day > reserve = 'no' > if len(sys.argv) == 4: > try: > year = int(sys.argv[1]) > month = int(sys.argv[2]) > day = int(sys.argv[3]) > # if sys.argv[4] == 'reserve': > # reserve = 'yes' > except: > print main.__doc__ > sys.exit(-1) > > print '下载%(y)d年%(m)d月%(d)d日的《新京报》' % {'y':year, 'm':month, > 'd':day} > global today > today = url % {'y':year, 'm':month, 'd':day} > global targetfile > targetfile = target % {'y':year, 'm':month, 'd':day} > > clean() > getlink() > merge() > # if reserve 'yes': > # clean() > > print '完成了!您要的报纸在G:\\' + targetfile > > if __name__ == "__main__": > main() > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > >>>>>>> > > > __ > Best Regards, > > Kebo Wang > > > _______________________________________________ > python-chinese list > python-chinese at lists.python.cn > http://python.cn/mailman/listinfo/python-chinese > -- 我就是我,是人间不一样的焰火. 升级中.................................. http://groups-beta.google.com/group/moview 电影爱好者讨论组 http://groups-beta.google.com/group/wiki4u wiki爱好者讨论组 http://www.coldtea.cn/blog/blog.asp?name=geoffery 我的博客 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050825/aba6b4ab/attachment.html
Zeuux © 2025
京ICP备05028076号