批量下载对路网图片并生成html的实现方法


Posted in Javascript onJune 07, 2016

对路使用ajax实现异步加载内容,在它的js代码中找到了相关代码

type : 'POST',
    url : '/index.php/request/new_data2/' + times + '/'+locinfo[domn][0],
    dataType : 'json',

返回的json字符串是一个被序列化的数组,数组中存放的是字典,其中要关注的是dict['t']以及dict['i'],dict['t']存放了图片的说明,dict['i']存放了图片的url.知道了这些后就可以开始python脚本了

import相关模块

# -*- coding: utf-8 -*-
import urllib2 as url
import json
import sys
import os
from datetime import *

(已经修复不能获取指定类型的bug,请求的url中最后一个数字代表类型)

获取json:index是下载的第几页,type是tws(太猥琐) tr(太热) tgx(太搞笑) tml(太萌了) tht(太好听 tyy(太养眼) 之一

然后是创建html文件

def create_html(alllist,name):
  html_head='<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>duilu</title><body>'
  html_end="</body></html>"
  f=open("%s.html"%(name),"w")
  f.write(html_head)
  for x in range(len(alllist)):
    f.write('<div><img src="%s/%s.gif"/>'%(name,str(x)))
    f.write('<p>%s</p></div>'%(alllist[x]['t'].encode('utf-8')))   
  f.write(html_end)
  f.close()

下载图片

def download(list,dirname,index=0):
  os.chdir(dirname)
  for dict in list:
    imgurl=dict['i']
    text= dict['t']
    print index
    print imgurl
    print text
    res=url.urlopen(imgurl)
    img_type=".gif"
    content_type=res.headers["content-type"]
    if content_type=="image/jpeg":
      type=".jgp"
    filepath="%s"%(str(index)+img_type)
    f=open(filepath,"wb")
    f.write(res.read())
    f.close()
    res.close()
    index+=1
  os.chdir("../")

主函数,用于调用上面那几个函数

def start(type,lenght):
  lenght=int(lenght)
  now=datetime.now()
  now=now.strftime("%m-%d %H.%M.%S")
  os.mkdir(type+now)
  
  alllist=[]
  for x in range(0,lenght):
    list=get_json(x,type)
    alllist.extend(list)
  create_html(alllist,type+now)
  download(alllist,type+now)
  print "\r\n\r\n==============OK==============\r\n\r\n"

一个循环体,获取用户输入

while(True):
  print "输入tws(太猥琐) tr(太热) tgx(太搞笑) tml(太萌了) tht(太好听 tyy(太养眼) 之一\r\nexit:退出"
  type=raw_input()
  all_type=["tgx","tws","tyy","tr","tml","tht"]
  if type in all_type:
    print "键入下载页数:"
    lenght=raw_input()
    start(type,lenght)
  elif type=="exit":
    break
  else:
    print "\r\n输入有误\r\n"

ok完成了,脚本会在当前目录下生成一个以时间命名的html文件以及同名文件夹来存放图片。

测试了一下,下载100多张图片用了几分钟,所以呢我觉得不需要多线程来下载。

也可以稍稍修改下生成html的地方,变成分页显示,然后将网页拖进安卓手机里看也是不错的

用python就是那么简单!

以上这篇批量下载对路网图片并生成html的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js检测客户端不是firefox则提示下载
Apr 07 Javascript
javascript 一个函数对同一元素的多个事件响应
Jul 25 Javascript
javascript多种数据类型表格排序代码分析
Sep 11 Javascript
简单实用jquery版三级联动select示例
Jul 04 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
Three.js开发实现3D地图的实践过程总结
Nov 20 Javascript
浅谈webpack+react多页面开发终极架构
Nov 11 Javascript
vue封装一个简单的div框选时间的组件的方法
Jan 06 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
vue实现微信分享链接添加动态参数的方法
Apr 29 Javascript
关于vue的列表图片选中打钩操作
Sep 09 Javascript
Javascript中window.name属性详解
Nov 19 Javascript
javascript之Boolean类型对象
Jun 07 #Javascript
jQuery简单实现仿京东分类导航层效果
Jun 07 #Javascript
javascript之Array 数组对象详解
Jun 07 #Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 #Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 #Javascript
javascript基础知识
Jun 07 #Javascript
jQuery+Ajax实现限制查询间隔的方法
Jun 07 #Javascript
You might like
php,不用COM,生成excel文件
2006/10/09 PHP
浅谈php扩展imagick
2014/06/02 PHP
JQuery jsonp 使用示例代码
2009/08/12 Javascript
javascript new fun的执行过程
2010/08/05 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
JavaScript实现美化滑块效果
2019/05/17 Javascript
vue组件 keep-alive 和 transition 使用详解
2019/10/11 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
js实现点赞效果
2020/03/16 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python入门篇之对象类型
2014/10/17 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
用canvas画心电图的示例代码
2018/09/10 HTML / CSS
留学推荐信中文范文三篇
2014/01/25 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
授权委托书样本
2014/04/03 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
关于环保的广播稿
2015/12/17 职场文书
高中班主任培训心得体会
2016/01/07 职场文书