批量下载对路网图片并生成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 相关文章推荐
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
Apr 01 Javascript
基于jQuery的弹出框插件
Mar 18 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
Oct 24 Javascript
jfreechart插件将数据展示成饼状图、柱状图和折线图
Apr 13 Javascript
跟我学习javascript的this关键字
May 28 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
Jul 21 Javascript
js弹性势能动画之抛物线运动实例详解
Jul 27 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
iview日期控件,双向绑定日期格式的方法
Mar 15 Javascript
jQuery实现ajax的嵌套请求案例分析
Feb 16 jQuery
JS高级程序设计之class继承重点详解
Jul 07 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的array_multisort()使用方法介绍
2012/05/16 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
简单谈谈json跨域
2016/03/13 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
vue3+typeScript穿梭框的实现示例
2020/12/29 Vue.js
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
python下如何让web元素的生成更简单的分析
2008/07/17 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
纪念九一八事变83周年国旗下讲话稿
2014/09/15 职场文书
2014年化验员工作总结
2014/11/18 职场文书
答谢词范文
2015/01/05 职场文书
培训通知书模板
2015/04/17 职场文书
导游词之麻姑仙境
2019/11/18 职场文书
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python