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共享引用(多个变量引用)示例代码
Dec 04 Python
python中while循环语句用法简单实例
May 07 Python
python定时执行指定函数的方法
May 27 Python
Python线性方程组求解运算示例
Jan 17 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
Python一行代码实现快速排序的方法
Apr 30 Python
python用for循环求和的方法总结
Jul 08 Python
Python笔记之观察者模式
Nov 20 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
Jun 03 Python
浅谈对python中if、elif、else的误解
Aug 20 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
Sep 23 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
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
php面试实现反射注入的详细方法
2019/09/30 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
jquery延迟对象解析
2016/10/26 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
佳能德国网上商店:Canon德国
2017/03/18 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
职业技术学校毕业生推荐信
2013/12/03 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
酒店销售经理岗位职责
2014/01/31 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
课例研修方案
2014/05/31 职场文书
大学生助学金感谢信
2015/01/21 职场文书
公司捐书倡议书
2015/04/27 职场文书
夏洛特的网观后感
2015/06/15 职场文书
爱国主义电影观后感
2015/06/18 职场文书
实习报告怎么写
2019/06/20 职场文书
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技