无比强大!Python抓取cssmoban网站的模版并下载
Python实现抓取http://www.cssmoban.com/cssthemes网站的模版并下载
实现代码
- # -*- coding: utf-8 -*-
- import urlparse
- import urllib2
- import re
- import os
- import os.path
- URL='http://www.cssmoban.com/cssthemes'
- #全局超时设置
- urllib2.socket.setdefaulttimeout(500)
- #根据url获取内容
- def getUrlContent(url):
- response = urllib2.urlopen(url)
- html = response.read();
- return html
- #获取html中的a标签,且格式是<a target="_blank" href="/showcase/*">的
- def getAllUrl(html):
- return re.findall('<a[\\s]+href="/cssthemes/\d+\.shtml">.*?\/a>',html)
- #获取下载文件的标题
- def getDownTitle(html):
- return re.findall('\<h1>(.*?)\</h1>',html)
- #获取文件下载的url
- def getDownUrl(html):
- return re.findall('<a.*?class="button btn-down".*?\/a>',html)
- #获取下一页的url
- def getNextUrl(html):
- return re.findall('<a.*?下一页</a>',html)
- #下载文件
- def download(title,url):
- result = urllib2.urlopen(url).read()
- if os.path.exists("template/")==False:
- os.makedirs("template/")
- newname=("template/"+title.decode('utf-8'))
- newname=newname+'.'+url[url.rfind('.')+1:len(url)]
- open(newname, "wb").write(result)
- #记录日志
- def i(msg):
- fileobj=open('info.log','a')
- fileobj.write(msg+'\n')
- fileobj.close();
- print msg
- #记录错误日志
- def e(msg):
- fileobj=open('error.log','a')
- fileobj.write(msg+'\n')
- fileobj.close();
- print msg
- if __name__ == '__main__':
- #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>')
- html= getUrlContent(URL)
- i('开始下载:%s' %(URL))
- while True:
- lista= getAllUrl(html);
- #print lista;
- nextPage=getNextUrl(html)
- #print nextPage[0]
- nextUrl=''
- #i('下一页%s'%(nextPage))
- if len(nextPage)<=0:
- e('地址:%s,未找到下一页,程序退出' %(nextPage))
- break;
- nextUrl=nextPage[0]
- nextUrl=URL+'/'+nextUrl[nextUrl.index('href="')+6:nextUrl.index('" target')]
- #print nextPage
- for a in lista:
- downGotoUrl=''
- try:
- #print a.decode('utf-8')
- downGotoUrl=(URL+''+a[a.index('href="')+6:a.index('">')])
- downGotoUrl=downGotoUrl.replace(URL,'http://www.cssmoban.com')
- #print downGotoUrl
- downHtml=getUrlContent(downGotoUrl)
- #print downHtml
- downTitleList= getDownTitle(downHtml)
- downTitle=''
- if len(downTitleList)>0:
- downTitle=downTitleList[0]
- #print downTitle
- downUrlList= getDownUrl(downHtml)
- downUrl=''
- if len(downUrlList)>0:
- downUrl=downUrlList[0]
- downUrl= downUrl[downUrl.index('href="')+6:downUrl.index('" target')]
- #print downUrl
- i('开始下载:%s,文件名:%s' %(downUrl,downTitle))
- download(downTitle,downUrl)
- i('%s下载完成,保存文件名:%s' %(downUrl,downTitle))
- except Exception,e:
- e('地址:%s下载失败,失败信息:' %(downGotoUrl))
- e(str(e))
- i('-----------------------------------------')
- i('执行下一页:%s' %(nextUrl))
- html= getUrlContent(nextUrl)
# -*- coding: utf-8 -*-
import urlparse
import urllib2
import re
import os
import os.path URL='http://www.cssmoban.com/cssthemes'全局超时设置
urllib2.socket.setdefaulttimeout(500)根据url获取内容
def getUrlContent(url):
response = urllib2.urlopen(url)
html = response.read();
return html获取html中的a标签,且格式是<a target="_blank" href="/showcase/*">的
def getAllUrl(html):
return re.findall('<a[\s]+href="/cssthemes/\d+.shtml">.*?/a>',html)获取下载文件的标题
def getDownTitle(html):
return re.findall('<h1>(.*?)</h1>',html)获取文件下载的url
def getDownUrl(html):
return re.findall('<a.?class="button btn-down".?/a>',html)获取下一页的url
def getNextUrl(html):
return re.findall('<a.*?下一页</a>',html)下载文件
def download(title,url):
result = urllib2.urlopen(url).read()
if os.path.exists("template/")==False:
os.makedirs("template/")
newname=("template/"+title.decode('utf-8'))
newname=newname+'.'+url[url.rfind('.')+1:len(url)]
open(newname, "wb").write(result)记录日志
def i(msg):
fileobj=open('info.log','a')
fileobj.write(msg+'\n')
fileobj.close();
print msg记录错误日志
def e(msg):
fileobj=open('error.log','a')
fileobj.write(msg+'\n')
fileobj.close();
print msg
if name == 'main':#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>') html= getUrlContent(URL)
i('开始下载:%s' %(URL))
while True:
lista= getAllUrl(html);
#print lista;
nextPage=getNextUrl(html)
#print nextPage[0]
nextUrl=''
#i('下一页%s'%(nextPage)) if len(nextPage)<=0:
e('地址:%s,未找到下一页,程序退出' %(nextPage))
break; nextUrl=nextPage[0]
nextUrl=URL+'/'+nextUrl[nextUrl.index('href="')+6:nextUrl.index('" target')]
#print nextPage
for a in lista:
downGotoUrl=''
try:
#print a.decode('utf-8')
downGotoUrl=(URL+''+a[a.index('href="')+6:a.index('">')])
downGotoUrl=downGotoUrl.replace(URL,'http://www.cssmoban.com')
#print downGotoUrl
downHtml=getUrlContent(downGotoUrl)
#print downHtml
downTitleList= getDownTitle(downHtml)
downTitle=''
if len(downTitleList)>0:
downTitle=downTitleList[0]
#print downTitle
downUrlList= getDownUrl(downHtml)
downUrl=''
if len(downUrlList)>0:
downUrl=downUrlList[0]
downUrl= downUrl[downUrl.index('href="')+6:downUrl.index('" target')]
#print downUrl
i('开始下载:%s,文件名:%s' %(downUrl,downTitle)) download(downTitle,downUrl)
i('%s下载完成,保存文件名:%s' %(downUrl,downTitle))
except Exception,e:
e('地址:%s下载失败,失败信息:' %(downGotoUrl))
e(str(e)) i('-----------------------------------------')
i('执行下一页:%s' %(nextUrl))
html= getUrlContent(nextUrl)
原文地址:https://blog.csdn.net/wiker_yong/article/details/25844349
无比强大!Python抓取cssmoban网站的模版并下载的更多相关文章
- 无比强大!Python抓取cssmoban站点的模版并下载
Python实现抓取http://www.cssmoban.com/cssthemes站点的模版并下载 实现代码 # -*- coding: utf-8 -*- import urlparse imp ...
- 用python抓取求职网站信息
本次抓取的是智联招聘网站搜索“数据分析师”之后的信息. python版本: python3.5. 我用的主要package是 Beautifulsoup + Requests+csv 另外,我将招聘内 ...
- python爬取视频网站m3u8视频,下载.ts后缀文件,合并成整视频
最近发现一些网站,可以解析各大视频网站的vip.仔细想了想,这也算是爬虫呀,爬的是视频数据. 首先选取一个视频网站,我选的是 影视大全 ,然后选择上映不久的电影 “一出好戏” . 分析页面 我用的是c ...
- python抓取网站提示错误ssl.SSLCertVerificationError处理
python在抓取制定网站的错误提示:ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify ...
- Python多进程方式抓取基金网站内容的方法分析
因为进程也不是越多越好,我们计划分3个进程执行.意思就是 :把总共要抓取的28页分成三部分. 怎么分呢? # 初始range r = range(1,29) # 步长 step = 10 myList ...
- Python抓取视频内容
Python抓取视频内容 Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具 ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
- python抓取性感尤物美女图
由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...
- python抓取网页例子
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
随机推荐
- .NET深入解析LINQ框架1
1.LINQ简述 2.LINQ优雅前奏的音符 2.1.隐式类型 (由编辑器自动根据表达式推断出对象的最终类型) 2.2.对象初始化器 (简化了对象的创建及初始化的过程) 2.3.Lambda表达式 ( ...
- 【原创】MemCached中的参数解释
优化MemCached的主要目的为增加命中率和提高内存使用率,在优化的时候可以根据以下参数综合考虑分析: 首先是进程项: pid Memcached进程ID uptime Memcached运行时间, ...
- gcd的queue与group
queue相当于事件处理机制里的事件池:只是任务池: 线程作为事件处理的实施者,由线程池从任务池中获取任务进行调度派发: group相当与工作组,按照任务的相关性对任务进行组织.
- java几种远程服务调用协议的比较
原文地址:http://www.cnblogs.com/jifeng/archive/2011/07/20/2111183.html 一.综述 本文比较了RMI,Hessian,Burlap,Http ...
- 关于Subversion主从备份方式的调整(全量、增量脚本)更新
本文引用于http://blog.chinaunix.net/uid-25266990-id-3369172.html 之前对Subversion服务器作了迁移,关于SVN的架构也走了调整,有单一的服 ...
- window安装特定补丁(勒索病毒)
最近出现震惊的蠕虫病毒(勒索病毒),微软也做出相应的安全补丁来修复 MS17-010.这时有些同学不想打开电脑 的自动更新,这样会下载大量补丁,要更新完这些补丁要好几个小时,为了不影响正常工作,我们就 ...
- Edward Frenkel关于几何化朗兰兹纲领的采访
本文来自:菲尔兹奖座谈会 博客 Edward Frenkel教授的主要研究方向是数学与量子物理中的对称.他现在在做的许多问题都与朗兰兹纲领有关.他现在是加州大学伯克利分校的数学教授. 在今年的菲尔兹奖 ...
- Multi-Byte Character Set & Unicode Character Set
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/49592361 编程时遇到BUG:err ...
- Android控件篇
Android中提供了丰富的UI空间.为了最大限度地发挥平台的性能.每个开发人员必须熟练掌握UI控件尤其是经常使用的UI控件.并能依据须要呈现的内容选择最恰当的控件. Android提供了XML配置和 ...
- 在 Win8.1 上安装 Dedup
install-package Microsoft-Windows-ServerCore-FullServer-Package~31bf3856ad364e35~amd64~~6.3.9600.163 ...