Python论坛  - 讨论区

标题:Re: [python-chinese] 下载《新京报》的脚本

2005年08月25日 星期四 15:11

Geoffery>>>嘎瑞>>>XuLi geofferyli at gmail.com
Thu Aug 25 15:11:42 HKT 2005

我测试了一下。有以下两个问题:
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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号