对路使用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 indexprint imgurlprint textres=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+=1os.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 "
==============OK==============
"
一个循环体,获取用户输入
while(True):print "输入tws(太猥琐) tr(太热) tgx(太搞笑) tml(太萌了) tht(太好听 tyy(太养眼) 之一
exit:退出"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":breakelse:print "
输入有误
"
ok完成了,脚本会在当前目录下生成一个以时间命名的html文件以及同名文件夹来存放图片。
测试了一下,下载100多张图片用了几分钟,所以呢我觉得不需要多线程来下载。
也可以稍稍修改下生成html的地方,变成分页显示,然后将网页拖进安卓手机里看也是不错的
用python就是那么简单!
以上这篇批量下载对路网图片并生成html的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。