无比强大!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,写的代码 ...
随机推荐
- python下载网页转化成pdf
最近在学习一个网站补充一下cg基础.但是前几天网站突然访问不了了,同学推荐了waybackmachine这个网站,它定期的对网络上的页面进行缓存,但是好多图片刷不出来,很憋屈.于是网站恢复访问后决定把 ...
- Eclipse schema xml提示
步骤一:确定xsd文件位置 spring-framework-3.2.0.RELEASE\schema\beans 步骤二:复制路径 步骤三:搜索“xml catalog” 步骤四:添加约束提示 ...
- ZBrush笔刷属性栏简介
在笔刷的属性栏当中,最先要了解和掌握的就是Zadd和Zsub两个按钮,当激活Zadd按钮时,我们雕刻的形态向屏幕外突出:当激活Zsub时,我们雕刻的形体就会向屏幕内凹陷.如果在激活Zadd按钮时,雕刻 ...
- POJ-2420 A Star not a Tree? 梯度下降 | 模拟退火
题目链接:https://cn.vjudge.net/problem/POJ-2420 题意 给出n个点,找一个点,使得这个点到其余所有点距离之和最小. 思路 一开始就在抖机灵考虑梯度下降,猜测是个凸 ...
- 【PRML学习笔记】第四章:分类的线性模型
一.基础概念 线性分类模型:决策面(decision boundary)是输入向量的线性函数 目标类别的表示"1 of K" :$ t = (0,1,0,0,0)^T$ 二.分类问 ...
- docker系列之一 image和container
docker images往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法: 1.进入root权限 sudo su 2.停止所有的container,这样才能够删除其中的imag ...
- PHP JWT初识
一直没有好好看过jwt,直到前两天要做web验证,朋友给我推荐了jwt.才发现jwt已经被大家广泛的应用了.看来我有点out了.哈哈,趁着这个世界来好好看看这个. JWT(JSON Web Token ...
- 紫书 习题11-11 UVa 1644 (并查集)
这道题感觉思路非常巧妙, 我是看了别人的博客才想明白的. 这里用到了并查集, 以根节点为中心城市, 然后把边从大到小排序, 每次的当前的边即为容量, 因为是目前的最小值, 然后去算总的容量, 每次选容 ...
- 【Divide by Zero 2017 and Codeforces Round #399 (Div. 1 + Div. 2, combined) B】 Code For 1
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把序列生成的过程看成一颗树 会发现最后形成的是一颗二叉树. 每个二叉树上的节点就对应了序列中的一个数字. 如果我们把每个节点都往下投 ...
- NYIST 46 最少乘法次数
最少乘法次数 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 给你一个非零整数,让你求这个数的n次方,每次相乘的结果可以在后面使用,求至少需要多少次乘.如24:2*2 ...