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之配置日志的几种方式
May 22 Python
Python解决八皇后问题示例
Apr 22 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
May 07 Python
解决Django migrate No changes detected 不能创建表的问题
May 27 Python
用python简单实现mysql数据同步到ElasticSearch的教程
May 30 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
python分布式编程实现过程解析
Nov 08 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
python批量修改文件名的示例
Sep 27 Python
python 爬取京东指定商品评论并进行情感分析
May 27 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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
那些年一起学习的PHP(一)
2012/03/21 PHP
php上传文件常见问题总结
2015/02/03 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
浅谈JavaScript中的对象及Promise对象的实现
2015/11/15 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
javascript判断回文数详解及实现代码
2017/02/03 Javascript
Vue 中axios配置实例详解
2018/07/27 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
js实现简单的秒表
2020/01/16 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
Python 利用切片从列表中取出一部分使用的方法
2019/02/01 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python tkinter之ComboBox(下拉框)的使用简介
2021/02/05 Python
家长会演讲稿
2014/04/26 职场文书
党员对照检查材料
2014/09/22 职场文书
工作年限证明模板
2015/06/15 职场文书
大学生十八大感想
2015/08/11 职场文书
社区服务理念口号
2015/12/25 职场文书
在Django中使用MQTT的方法
2021/05/10 Python