zoukankan      html  css  js  c++  java
  • 无比强大!Python抓取cssmoban网站的模版并下载

    Python实现抓取http://www.cssmoban.com/cssthemes网站的模版并下载


    实现代码

    1. # -*- coding: utf-8 -*-  
    2. import urlparse  
    3. import urllib2  
    4. import re  
    5. import os    
    6. import os.path  
    7.   
    8. URL='http://www.cssmoban.com/cssthemes'  
    9.   
    10. #全局超时设置   
    11. urllib2.socket.setdefaulttimeout(500)  
    12.   
    13. #根据url获取内容  
    14. def getUrlContent(url):  
    15.     response = urllib2.urlopen(url)  
    16.     html = response.read();  
    17.     return html  
    18.   
    19. #获取html中的a标签,且格式是<a target="_blank" href="/showcase/*">的  
    20. def getAllUrl(html):  
    21.     return re.findall('<a[\s]+href="/cssthemes/d+.shtml">.*?/a>',html)  
    22.   
    23. #获取下载文件的标题  
    24. def getDownTitle(html):  
    25.     return re.findall('<h1>(.*?)</h1>',html)  
    26.   
    27. #获取文件下载的url  
    28. def getDownUrl(html):  
    29.     return re.findall('<a.*?class="button btn-down".*?/a>',html)  
    30.   
    31. #获取下一页的url  
    32. def getNextUrl(html):  
    33.     return re.findall('<a.*?下一页</a>',html)  
    34.   
    35. #下载文件  
    36. def download(title,url):  
    37.     result = urllib2.urlopen(url).read()  
    38.     if os.path.exists("template/")==False:  
    39.         os.makedirs("template/")  
    40.     newname=("template/"+title.decode('utf-8'))  
    41.     newname=newname+'.'+url[url.rfind('.')+1:len(url)]  
    42.     open(newname, "wb").write(result)  
    43.   
    44. #记录日志  
    45. def i(msg):  
    46.     fileobj=open('info.log','a')  
    47.     fileobj.write(msg+' ')  
    48.     fileobj.close();  
    49.     print msg  
    50. #记录错误日志  
    51. def e(msg):  
    52.     fileobj=open('error.log','a')  
    53.     fileobj.write(msg+' ')  
    54.     fileobj.close();  
    55.     print msg  
    56. if __name__ == '__main__':  
    57.   
    58.     #print getDownUrl('<a href="http://down.cssmoban.com/cssthemes1/cctp_17_jeans.zip" target="_blank" class="button btn-down" title="免费下载"><i class="icon-down icon-white"></i><i class="icon-white icon-down-transiton"></i>免费下载</a>')  
    59.       
    60.     html= getUrlContent(URL)  
    61.     i('开始下载:%s' %(URL))  
    62.     while True:  
    63.         lista= getAllUrl(html);  
    64.         #print lista;  
    65.         nextPage=getNextUrl(html)  
    66.         #print nextPage[0]  
    67.         nextUrl=''  
    68.         #i('下一页%s'%(nextPage))  
    69.           
    70.         if len(nextPage)<=0:  
    71.             e('地址:%s,未找到下一页,程序退出' %(nextPage))  
    72.             break;  
    73.           
    74.         nextUrl=nextPage[0]  
    75.         nextUrl=URL+'/'+nextUrl[nextUrl.index('href="')+6:nextUrl.index('" target')]  
    76.         #print nextPage  
    77.         for a in lista:  
    78.             downGotoUrl=''  
    79.             try:  
    80.                 #print a.decode('utf-8')  
    81.                 downGotoUrl=(URL+''+a[a.index('href="')+6:a.index('">')])  
    82.                 downGotoUrl=downGotoUrl.replace(URL,'http://www.cssmoban.com')  
    83.                 #print downGotoUrl  
    84.                 downHtml=getUrlContent(downGotoUrl)  
    85.                 #print downHtml  
    86.                 downTitleList= getDownTitle(downHtml)  
    87.                 downTitle=''  
    88.                 if len(downTitleList)>0:  
    89.                     downTitle=downTitleList[0]  
    90.                 #print downTitle  
    91.                 downUrlList= getDownUrl(downHtml)  
    92.                 downUrl=''  
    93.                 if len(downUrlList)>0:  
    94.                     downUrl=downUrlList[0]  
    95.                 downUrl= downUrl[downUrl.index('href="')+6:downUrl.index('" target')]  
    96.                 #print downUrl  
    97.                 i('开始下载:%s,文件名:%s' %(downUrl,downTitle))  
    98.   
    99.                 download(downTitle,downUrl)  
    100.                 i('%s下载完成,保存文件名:%s' %(downUrl,downTitle))  
    101.             except Exception,e:  
    102.                 e('地址:%s下载失败,失败信息:' %(downGotoUrl))  
    103.                 e(str(e))  
    104.                   
    105.   
    106.         i('-----------------------------------------')  
    107.         i('执行下一页:%s' %(nextUrl))  
    108.         html= getUrlContent(nextUrl)  
    109.       
    110.           



    原文地址:https://blog.csdn.net/wiker_yong/article/details/25844349

  • 相关阅读:
    Redhat6.4安装MongoDBv3.6.3
    windows模糊查询指定进程是否存在
    Linux普通用户不能使用TAB键、上下键
    零基础Python爬虫实现(百度贴吧)
    零基础Python爬虫实现(爬取最新电影排行)
    让bat批处理后台运行,不显示cmd窗口(完全静化)
    根据进程名监控进程(邮件提醒)
    android 开发中,必须要注意的知识点. (持续更新)
    Android上传文件至服务器
    为应用添加多个Activity与参数传递
  • 原文地址:https://www.cnblogs.com/jpfss/p/9227475.html
Copyright © 2011-2022 走看看