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中encode()方法的使用简介
May 18 Python
python简单文本处理的方法
Jul 10 Python
python实现基本进制转换的方法
Jul 11 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 Python
python科学计算之narray对象用法
Nov 25 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
python获取linux系统信息的三种方法
Oct 14 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
python识别围棋定位棋盘位置
Jul 26 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
5种PHP创建数组的实例代码分享
2014/01/17 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
JQuery一种取同级值的方式(比如你在GridView中)
2012/03/15 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
微信小程序textarea层级过高的解决方法
2019/03/04 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
python多线程方式执行多个bat代码
2016/06/07 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
python简单验证码识别的实现方法
2019/05/10 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
python 实现单通道转3通道
2019/12/03 Python
python计算导数并绘图的实例
2020/02/29 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
ZWILLING双立人法国网上商店:德国刀具锅具厨具品牌
2019/08/28 全球购物
平面设计的岗位职责
2013/11/08 职场文书
高一数学教学反思
2014/02/07 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python