批量下载对路网图片并生成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 相关文章推荐
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
Mar 22 Javascript
Javascript 复制数组实现代码
Nov 26 Javascript
小议Javascript中的this指针
Mar 18 Javascript
使用jQuery实现星级评分代码分享
Dec 09 Javascript
node.js中格式化数字增加千位符的几种方法
Jul 03 Javascript
jQuery Validate表单验证深入学习
Dec 18 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
Jan 07 Javascript
jquery中的常见问题及快速解决方法小结
Jun 14 Javascript
js时间控件只显示年月
Jan 08 Javascript
基于JavaScript实现瀑布流效果
Mar 29 Javascript
Bootstrap table使用方法记录
Aug 23 Javascript
微信小程序日历组件使用方法详解
Dec 29 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输出缓存(output_buffering)的深入理解
2013/06/13 PHP
PHP的构造方法,析构方法和this关键字详细介绍
2013/10/22 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
PHP实现简单日历类编写
2020/08/28 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
关于javascript DOM事件模型的两件事
2010/07/22 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
JavaScript之class继承_动力节点Java学院整理
2017/07/03 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
Python中装饰器学习总结
2018/02/10 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
大宝sod蜜广告词
2014/03/21 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android