• 采集练习(四) python 获得hao123导航图片分类下的美女图片


      python实现前几天用php 实现的下载图片功能。

    python  版本 2.73

    部分代码来自  http://www.php10086.com/2013/01/1278.html

    遇到的问题 :

    1、采集执行到30页就出错,程序中断 (问题没解决) 我只好采30页;

    2、 open 函数打开文件时候 'w' 模式 保存到本地的图片无法打开, 后来 使用 'wb'模式 问题得到解决;

    3、 没有后缀的图片,默认加上 .jpg 后缀;

    4、获得 json 数据必须 带上 User_Agent   Referer 否则无法获得。

    以下是代码 :

    # -*- coding: utf-8 -*-
    import os,json, urllib2, time,socket
    socket.setdefaulttimeout(10)
    startTime = time.time()
    dir = 'D:\python\hao123pic\pic\\'
    if not os.path.isdir(dir):
        os.mkdir(dir)
    j = 1
    i = 1
    while i < 3:
        nums = int(time.time()) * 1000
        url = 'http://pic.hao123.com/screen/meinv_meinv/'+str(i)+'?v=' + str(nums) + '&act=type'
        request = urllib2.Request(url)
        request.add_header('User-Agent', 'Mozilla/5.0')
        request.add_header('Referer', 'http://pic.hao123.com/meinv_meinv?style=xl')
        opener = urllib2.build_opener()
        data = opener.open(request).read()
        jsonData = json.loads(data)
    
        for n in jsonData:
            if n['picurl_orig']:
                req = urllib2.Request(n['picurl_orig'])
                imgData = urllib2.urlopen(req).read()
                imageName = dir + os.path.basename(n['picurl_orig'])
                ext = imageName.split('.')
                if len(ext)<2:
                    imageName = imageName+'.jpg'
                file_object = open(imageName, 'wb')
                file_object.write(imgData)
                file_object.close()
                print('img %s_%s is ok' % (i, j))
                j += 1
            else:
                endTime = time.time()
                print(endTime - startTime)
    
        i += 1
    
    endTime = time.time()
    print(endTime - startTime)
    
                
  • 相关阅读:
    10003 Cutting Sticks(区间dp)
    Cocos2d-x init() 和 onEnter() 区别
    HDU1181【有向图的传递闭包】
    空间参考系统与WKT解析
    面试经典-分金条
    uvalive 3971
    lua学习:使用Lua处理游戏数据
    面试经典--两个房间 每间房间三盏灯
    浙江大学PAT上机题解析之2-11. 两个有序链表序列的合并
    顺序队列之C++实现
  • 原文地址:https://www.cnblogs.com/keygle/p/2950899.html
Copyright © 2020-2023  润新知