Python下载懒人图库JavaScript特效


Posted in Python onMay 28, 2015

这是一个简单的Python脚本,主要从懒人图库下载JavaScript特效模板,在脚本中使用了gevent这个第三方库,使用的时候需要先安装。

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import urllib,os,sys
import gevent,re
from gevent import monkey
from bs4 import BeautifulSoup
gevent.monkey.patch_socket()
 
'''
Description:Python 爬虫抓取懒人图库的JS脚本模板
Author:admin
Create-Date:2015-05-25
Version:1.0
'''
 
HTTP_URL = 'http://www.lanrentuku.com%s'
DOWNLOAD_URL = HTTP_URL[:-2] + '/js/d%szip'
reg=r'\d{1,}\.+'
 
def encode(text):
  return text.encode("utf8")
 
def createDirectory(curPath):
  myPath = os.path.join(getSubDirectory(), u'JS代码模板')
  if not os.path.exists(myPath):
    os.mkdir(myPath)
  return os.path.join(myPath, curPath)
 
def getSubDirectory():
  return os.getcwd()
 
def schedule(a, b, c): 
  per = 100.0 * a * b / c
  if per > 100 :
    per = 100
  sys.stdout.write('%.1f%%\r' % per)
  sys.stdout.flush()
 
def geturllist(url):
  url_list = {}
  html = urllib.urlopen(url)
  content = html.read()
  html.close()
  # 用BeautifulSoup解析
  decodeHtml = BeautifulSoup(content)
  try:
    aTags = decodeHtml.find_all('div', {'class':'list-pngjs'})[0].find_all('a')
  except IndexError, e:
    print e
    aTags = None
  # 获取链接地址和标题
  if aTags is not None:
    for a_tag in aTags:
      url_list[HTTP_URL % a_tag.get('href')] = a_tag.get_text()
  return url_list
  
def download(down_url):
  try:
    m=re.search(reg,down_url[0])
    name = DOWNLOAD_URL % m.group(0)
    urllib.urlretrieve(name,createDirectory(down_url[1] + name[-4:]),schedule)
  except Exception, e:
    print e.message
  
def getpageurl(xUrl):
  # 进行列表页循环
  return [xUrl % page for page in xrange(1,49)]
 
if __name__ == '__main__':
  jobs = []
  pageurl = getpageurl('http://www.lanrentuku.com/js/p%s.html')
  # 爬取所有链接
  for i in pageurl:
    for k in geturllist(i).items():
      jobs.append(gevent.spawn(download, k))
  gevent.joinall(jobs)

以上所述就是本文的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
Python设计模式之单例模式实例
Apr 26 Python
在Python的Flask框架中实现单元测试的教程
Apr 20 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
May 06 Python
python去掉行尾的换行符方法
Jan 04 Python
python 网络编程详解及简单实例
Apr 25 Python
django定期执行任务(实例讲解)
Nov 03 Python
Python2与python3中 for 循环语句基础与实例分析
Nov 20 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
python Kmeans算法原理深入解析
Aug 23 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
利用python进行数据加载
Jun 20 Python
Python实现给qq邮箱发送邮件的方法
May 28 #Python
Python import用法以及与from...import的区别
May 28 #Python
Python中使用不同编码读写txt文件详解
May 28 #Python
Python实现统计英文单词个数及字符串分割代码
May 28 #Python
python处理大数字的方法
May 27 #Python
python类继承用法实例分析
May 27 #Python
python显示生日是星期几的方法
May 27 #Python
You might like
浅析PHP Socket技术
2013/08/02 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
JS的反射问题
2010/04/07 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
JavaScript函数详解
2014/11/17 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
RequireJS入门一之实现第一个例子
2015/09/30 Javascript
JavaScript中this的用法实例分析
2016/12/19 Javascript
js实现截图保存图片功能的代码示例
2017/02/16 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
layui点击左侧导航栏,实现不刷新整个页面,只刷新局部的方法
2019/09/25 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
jquery轮播图插件使用方法详解
2020/07/31 jQuery
js实现删除json中指定的元素
2020/09/22 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
Python去掉字符串中空格的方法
2014/03/11 Python
python正则表达式match和search用法实例
2015/03/26 Python
Python深入06——python的内存管理详解
2016/12/07 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
python实现复制大量文件功能
2019/08/31 Python
vscode调试django项目的方法
2020/08/06 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
几道Java和数据库的面试题
2013/05/30 面试题
中专毕业自我鉴定
2013/10/16 职场文书
英语专业推荐信
2013/11/16 职场文书
协议书怎么写
2014/04/21 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
法定代表人身份证明书(含说明)
2014/10/02 职场文书
订货会邀请函
2015/01/31 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers
服务器间如何实现文件共享
2022/05/20 Servers