分享
 
 
 

用Python进行网页分析实现批量下载(final version)

王朝other·作者佚名  2006-03-10
窄屏简体版  字體: |||超大  

ChenPeng 2006-3-6 BeiJing

最终版:前几个版本(见本人的以前文章)基本都是用正则表达式实现匹配得到下载链接的,弊端有两方面:1。由于所 分析的网页很有规律,所以正则表达式实现起来过于繁琐,肯定不合适 2。各个任务之间都不不同,每次都重新编码,实现起来毫无规律,没有扩展性。所以此篇文章为这个专题的最终版,以后还有更多东西要学习,就不要在着方面纠缠了。

可执行版本:这次终于可以出一个自己比较满意的可执行版本,所以贴出源代码,作为这段工作的总结。相关的其他资源的获取,都可以由以下代码扩展之,而且相当简单,所以不再提供

运行要求:必须先下载和安装python-2.4.2.msi ,配置好Python环境;单击start.bat即可实现批量下载

源代码: 本工程只包括两个文件start.bat 和CustomParser.py:

start.bat

//make the dir for files and run the project

mkdir files

python CustomParser.py

CustomParser.py

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+'\n')

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\n名字: 因为有你\n人气: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], '\xc3\xfb\xd7\xd6: ', '' )]=self.headURL+replace ( text.split( ',' )[2], '\'', '' );

def Execute( self ):

for i in range( 1, 415 ):

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()

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有