网页分析实现批量下载

转载 2007年09月13日 09:49:00




from sgmllib import SGMLParser
from string import find, replace, rjust
from threading import Thread
import urllib

__author__ = "Chen Peng (peng.ch@hotmail.com)"
__version__ = "$Revision: 1.0 $"
__date__ = "$Date: 2006/03/03 $"
__copyright__ = "Copyright (c) 2006 Chen Peng"
__license__ = "Python"
__all__ = ["Gif_163_Parser"]

class PDownloadThread( Thread ):
    
"""
    Download the files in the dict and save them to local files with the given name
    
"""
    
def __init__( self, DictList,i ):
        Thread.
__init__( self )
        self.DictList 
= DictList
        self.pageno 
= str(i)
  
    
def run( self ):
        
for k in self.DictList.keys():
            
try:
                
print 'Download' + self.DictList[k] + '......'
                uFile 
= urllib.urlretrieve( self.DictList[k], './files/' + k + '.' + self.DictList[k].split('.')[self.DictList[k].split('.').__len__() - 1])
            
except :
                logfile 
= open('error.log''a')
                logfile.write(self.pageno 
+ ' ' + self.DictList[k] + '   ' + k + ' ')
                logfile.close() 
            
print 'Save to file ' + k

class Gif_163_Parser( SGMLParser ):
    
"""
    任务:下载163彩图
    原理:http://mms.163.com/new_web/cm_lv2_pic.jsp?catID=&ord=dDate&page=2&type=1&key=
        从1到415页(共6637)分析得到如下路径:“/fgwx/hhsj/1_060302175613_186/128x128.gif”
    eg:<script>showPic('22930','1','/fgwx/hhsj/1_060302175613_186/128x128.gif', '1','编号:22930 名字: 因为有你 人气:100');</script>     
    下载路径:http://mmsimg.163.com/new_web/loaditem.jsp/type=1/path=/fgwx/llfj/1_060302175612_995/176x176.gif
    
"""
    
def reset( self ):                             
        SGMLParser.reset( self )
        self.headURL
='http://mmsimg.163.com/new_web/loaditem.jsp/type=1/path='
        self.SubURL 
= []
        self.Links 
= {}
         
    
def start_script( self, attrs ):
        
#self.SubURL.extend( [' %s="%s"' % ( key, value ) for key, value in attrs] )
        pass

    
def end_script( self ):
        
pass
  
    
def handle_data( self, text ):
        
if find( text, 'showPic' )!=-1:
            self.Links[replace( text.split( 
'/n' )[1], 'Ãû×Ö: ''' )]=self.headURL+replace ( text.split( ',' )[2], ''''' );
           
    
def Execute( self ):  
        
for i in range( 1415 ):
            self.Links.clear
            
try:
                usock 
= urllib.urlopen( "http://mms.163.com/new_web/cm_lv2_pic.jsp?catID=&ord=dDate&page=" + str(i) + "&type=1&key=" )
                self.feed( usock.read() )
                usock.close()
                TestThread
=PDownloadThread( self.Links ,i )
                TestThread.start()
                self.close()
            
except IOError:
                
pass   
        
#print ( ["%s=%sn"% ( k, self.Links[k] ) for k in self.Links.keys()] )
        #print self.Links

if __name__ == '__main__':
    
#Gif_163_Parser().Execute()
    testtask=Gif_163_Parser()
    testtask.Execute()



 

用火狐批量下载某个页面的所有文件

为了批量下载某个页面的数据,类似这样: https://mirador.gsfc.nasa.gov/cgi-bin/mirador/presentNavigation.pl?tree=project&...
  • u013765764
  • u013765764
  • 2017年04月02日 17:03
  • 2768

批量下载网页中所有的PDF文档

某日要下载网页中所有的PDF文档,大约400个。作为计算机专业的学生,显然不能手工去下载啊!!!于是在网上找到了相关的批量下载文档脚本,众里寻他千百度,终于在一篇博客http://blog.csdn....
  • u010183397
  • u010183397
  • 2015年11月28日 18:12
  • 3948

用python批量下载网站内容

逛到一个网站http://www.meiguoliyu.com/发现里边的内容挺不错的,但是一页就那么一点内容,总共几百页,一页一页点过去浏览也太累了 用PYTHON写了个程序把这几百页的内容都整合...
  • boksic
  • boksic
  • 2011年10月28日 10:37
  • 15751

如何批量下载一些网站上的压缩包或者图片

因为项目需要,我们需要从网上下载很多图片来做为数据集测试项目,经过一些研究,实现了批量下载ImageNet上的图片的程序在这里分享一个批量下载ImageNet图片的经验,其实这个例子适用于很多你知道下...
  • qq_24864285
  • qq_24864285
  • 2018年01月23日 16:12
  • 69

java web批量下载

java批量下载,将多文件打包成zip格式下载 现在的需求的: 根据产品族、产品类型,下载该产品族、产品类型下面的pic包; pic包是zip压缩文件; t_product表: 这些包以...
  • qq_32447301
  • qq_32447301
  • 2018年01月10日 21:43
  • 117

基于C#的百度图片批量下载工具

基于C#的百度图片批量下载工具
  • jtahstu
  • jtahstu
  • 2015年08月30日 21:24
  • 8372

Python抓取网页&批量下载文件方法初探(正则表达式+BeautifulSoup)

最近两周都在学习Python抓取网页方法,任务是批量下载网站上的文件。对于一个刚刚入门python的人来说,在很多细节上都有需要注意的地方,以下就分享一下我在初学python过程中遇到的问题及解决方法...
  • x_i_y_u_e
  • x_i_y_u_e
  • 2014年12月27日 20:17
  • 821

用Java批量下载PDF

Internet当中有着无数的标准和规范,其中IETF(因特网工程任务组)中的RFC就达到几千个http://ietfreport.isoc.org/rfc/PDF/,包括http协议,uri等等。最...
  • bingduanlbd
  • bingduanlbd
  • 2013年01月20日 22:16
  • 4380

用java实现批量下载选中文件

1.在action中定义变量     private List downLoadPaths = new ArrayList();//存储选中文件的下载地址     private OutputStre...
  • zhaoxd_1
  • zhaoxd_1
  • 2015年08月10日 10:49
  • 2632

java上传文件跟批量下载文件

最近的项目中涉及到文件的上传跟下载的问题,就自己所涉及到的方面做出如下表述。   首先是文件上传部分,项目的要求是通用性较好,所以只需要传入目标路径即可。参数的传递通过Form表单传值,在目标路...
  • zhifeiyu2008
  • zhifeiyu2008
  • 2013年11月12日 23:11
  • 10897
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网页分析实现批量下载
举报原因:
原因补充:

(最多只允许输入30个字)