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连接mysql数据库示例(做增删改操作)
Dec 31 Python
python实现带验证码网站的自动登陆实现代码
Jan 12 Python
python 多线程实现检测服务器在线情况
Nov 25 Python
基于Python的接口测试框架实例
Nov 04 Python
好的Python培训机构应该具备哪些条件
May 23 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
Jun 05 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
python 如何上传包到pypi
Dec 24 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
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
jQuery UI的Dialog无法提交问题的解决方法
2011/01/11 Javascript
一行代码告别document.getElementById
2012/06/01 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
JS逆序遍历实现代码
2014/12/02 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
jQuery实现切换隐藏与显示同时切换图标功能
2017/10/29 jQuery
浅谈node中的cluster集群
2018/06/02 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
茶余饭后聊聊Vue3.0响应式数据那些事儿
2019/10/30 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
Python实现字典依据value排序
2016/02/24 Python
Android分包MultiDex策略详解
2017/10/30 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
Python 没有main函数的原因
2020/07/10 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
体育教师自荐信范文
2013/12/16 职场文书
高校辅导员推荐信范文
2013/12/25 职场文书
绿色学校实施方案
2014/03/31 职场文书
公司承诺书怎么写
2014/05/24 职场文书
助理政工师申报材料
2014/06/03 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL