首页 > 编程 > JavaScript > 正文

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

2019-11-20 09:46:08
字体:
来源:转载
供稿:网友

对路使用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 urlimport jsonimport sysimport osfrom 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的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表