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编写批量卸载手机中安装的android应用脚本
Jul 21 Python
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
使用Python的urllib2模块处理url和图片的技巧两则
Feb 18 Python
python之Socket网络编程详解
Sep 29 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
python下载微信公众号相关文章
Feb 26 Python
python实现机器人卡牌
Oct 06 Python
python 利用已有Ner模型进行数据清洗合并代码
Dec 24 Python
使用Pycharm分段执行代码
Apr 15 Python
python xlwt模块的使用解析
Apr 13 Python
Python实现仓库管理系统
May 30 Python
Python实现信息管理系统
Jun 05 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取整函数ceil,floo,round的用法及介绍
2013/08/31 PHP
php实现插入排序
2015/03/29 PHP
浅析PHP echo 和 print 语句
2020/06/30 PHP
JavaScript 高级语法介绍
2009/06/15 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
js确认删除对话框适用于a标签及submit
2014/07/10 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
7个jQuery最佳实践
2016/01/12 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
Angular(5.2->6.1)升级小结
2018/12/27 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
2020/08/14 Javascript
原生JavaScript实现换肤
2021/02/19 Javascript
[51:28]EG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/16 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
Python元组及文件核心对象类型详解
2018/02/11 Python
Python 硬币兑换问题
2019/07/29 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
2021/01/05 Python
班组长安全职责
2014/01/05 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
关于保护环境的建议书
2014/05/13 职场文书
2015年推普周活动方案
2015/05/06 职场文书
毕业实习单位意见
2015/06/04 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
golang 实现时间戳和时间的转化
2021/05/07 Golang