批量下载对路网图片并生成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 判断undefined的实现代码
Nov 26 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
Sep 14 Javascript
Js中setTimeout()和setInterval() 何时被调用执行的用法
Apr 12 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
Sep 06 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 Javascript
老生常谈js数据类型
Aug 03 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
May 04 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
May 05 Javascript
JS实现select选中option触发事件操作示例
Jul 13 Javascript
vue中keep-alive,include的缓存问题
Nov 26 Javascript
AngularJS实现多级下拉框
Mar 25 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常用代码
2006/11/23 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
stripos函数知识点实例分享
2019/02/11 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
为什么要在引入的css或者js文件后面加参数的详细讲解
2013/05/03 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
2015/06/08 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
element-ui 弹窗组件封装的步骤
2021/01/22 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
使用Python进行目录的对比方法
2018/11/01 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
代码中finally中的代码会不会执行
2012/02/06 面试题
详解如何解决使用JSON.stringify时遇到的循环引用问题
2021/03/23 Javascript
美工的岗位职责
2013/11/14 职场文书
八年级数学教学反思
2014/01/31 职场文书
上班打牌检讨书
2014/02/07 职场文书
教师网络培训感言
2014/03/09 职场文书
乡镇领导干部个人对照检查材料思想汇报
2014/09/23 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
python3操作redis实现List列表实例
2021/08/04 Python