批量下载对路网图片并生成html的实现方法
对路使用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-*- importurllib2asurl importjson importsys importos fromdatetimeimport*
(已经修复不能获取指定类型的bug,请求的url中最后一个数字代表类型)
获取json:index是下载的第几页,type是tws(太猥琐)tr(太热)tgx(太搞笑)tml(太萌了)tht(太好听tyy(太养眼)之一
然后是创建html文件
defcreate_html(alllist,name):
html_head='<html><metahttp-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)
forxinrange(len(alllist)):
f.write('<div><imgsrc="%s/%s.gif"/>'%(name,str(x)))
f.write('<p>%s</p></div>'%(alllist[x]['t'].encode('utf-8')))
f.write(html_end)
f.close()
下载图片
defdownload(list,dirname,index=0):
os.chdir(dirname)
fordictinlist:
imgurl=dict['i']
text=dict['t']
printindex
printimgurl
printtext
res=url.urlopen(imgurl)
img_type=".gif"
content_type=res.headers["content-type"]
ifcontent_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("../")
主函数,用于调用上面那几个函数
defstart(type,lenght):
lenght=int(lenght)
now=datetime.now()
now=now.strftime("%m-%d%H.%M.%S")
os.mkdir(type+now)
alllist=[]
forxinrange(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"] iftypeinall_type: print"键入下载页数:" lenght=raw_input() start(type,lenght) eliftype=="exit": break else: print"\r\n输入有误\r\n"
ok完成了,脚本会在当前目录下生成一个以时间命名的html文件以及同名文件夹来存放图片。
测试了一下,下载100多张图片用了几分钟,所以呢我觉得不需要多线程来下载。
也可以稍稍修改下生成html的地方,变成分页显示,然后将网页拖进安卓手机里看也是不错的
用python就是那么简单!
以上这篇批量下载对路网图片并生成html的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。