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使用urlparse分析网址中域名的方法
Apr 15 Python
Python 多线程抓取图片效率对比
Feb 27 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
python3中获取文件当前绝对路径的两种方法
Apr 26 Python
python实现弹跳小球
May 13 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
使用pymysql查询数据库,把结果保存为列表并获取指定元素下标实例
May 15 Python
Python 如何查找特定类型文件
Aug 17 Python
利用python绘制正态分布曲线
Jan 04 Python
详解Python 中的 defaultdict 数据类型
Feb 22 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
第十二节 类的自动加载 [12]
2006/10/09 PHP
laravel 4安装及入门图文教程
2014/10/29 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
Yii2语言国际化的配置教程
2018/08/19 PHP
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
python合并文本文件示例
2014/02/07 Python
Python实现对PPT文件进行截图操作的方法
2015/04/28 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
python pygame模块编写飞机大战
2018/11/20 Python
PyTorch基本数据类型(一)
2019/05/22 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
pyqt5中动画的使用详解
2020/04/01 Python
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
上班玩手机检讨书
2014/02/17 职场文书
《庐山的云雾》教学反思
2014/04/22 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
《给予树》教学反思
2016/03/03 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技