爬取 兔玩网 福利照片

# 2019/4/15

import json
import re
import requests
from requests.exceptions import RequestException
from urllib.parse import urlencode
from multiprocessing import Pool
import os
from hashlib import md5


def get_page(id):
    key={
        'type':'image',
        'dpr':3,
        'id':id,
    }
    url = 'https://api.tuwan.com/apps/Welfare/detail?' + urlencode(key)
    try:
        response = requests.get(url)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        print("请求页出错", url)
        return None
def getAll_ThumbUrl(res):
    code = res.strip('()',)
    obj = json.loads(code)
    # 在这里判断是否有数据,否则跳过
    # 然后处理出来一部分 大图数据和小图数据 用小图的关键参数去替换大图的,即可得到解锁大图
    if obj.get('data'):
        thumb = obj['thumb']
        realdata = {
            'REAL_URL':'',
            'REAL_KEYWORD':'',
            'REAL_IMAGEINFO':'',
            'title':''
        }
       #   。。。怕侵权,删了一部分
       #   。。。怕侵权,删了一部分
       #   。。。怕侵权,删了一部分
       #   。。。怕侵权,删了一部分
        for i in range(len(thumb)):
        # 1、提取缩略图的可用信息 前六位和后面的一串
            thumbData = prase_thumb(thumb[i])

        # 2、用一张data中的大图去替换对应的每个缩略图的可用信息
            big_img_url =replace_big_pic(realdata,thumbData)

       # 3、下载 按照名称分类文件
            download_image(realdata['title'],big_img_url)
    else:
        print('无资源')
def download_image(title,url):
    print('正在下载合集----',title,'正在下载图片', url)
    try:
        response = requests.get(url)
        if response.status_code == 200:
            save_image(title,response.content)
        return None
    except RequestException:
        print('请求图片出错', url)
        return None

def save_image(title,content):
    print(os.getcwd())
    # 按照名称去分类比较好,想看那个看那个
    curPath = os.getcwd()+'/tuwan'+'/'+title
    isExists = os.path.exists(curPath)
    if not isExists:
        os.mkdir(curPath)
    file_path = '{0}/{1}.{2}'.format(curPath, md5(content).hexdigest(), 'jpg')
    if not os.path.exists(file_path):
        with open(file_path, 'wb') as f:
            f.write(content)
            f.close()


def prase_thumb(url):
   # 。。。怕侵权,删了一部分
   # 。。。怕侵权,删了一部分
   # 。。。怕侵权,删了一部分
   # 这里是处理了缩略图的2个关键信息keyword,imgInfo
    return {
        'keyword':keyword,  
        'imgInfo':imgInfo[0]
    }

def replace_big_pic(realdata,thumbData):

    # 1  用REAL_KEYWORD 替换 data中的keword
    big_pic = realdata['REAL_URL'].replace(realdata['REAL_KEYWORD'],thumbData.get('keyword'))
    # 2  在替换后面的imageinfo
    big_pic = big_pic.replace(realdata['REAL_IMAGEINFO'],thumbData.get('imgInfo'))
    return big_pic


def main(id):
        # 获取页面的返回结果
        res  = get_page(id)
        # 处理页面结果
        getAll_ThumbUrl(res)

if __name__ == '__main__':
    groups = [x  for x in range(1000,1500)]
    pool = Pool()
    pool.map(main,groups)

 

爬取 兔玩网 福利照片_第1张图片
 

 

爬取 兔玩网 福利照片_第2张图片

代码删了一部分,想要图或者代码的,可以加我微信 ,在这里只提供思路。

爬取 兔玩网 福利照片_第3张图片

你可能感兴趣的:(爬取 兔玩网 福利照片)