介绍代码仅作学习使用,如若使用本站代码进行商业用途等牟利带来的后果,本站不负有责任

堆糖图网

爬取代码

注意事项

  • 依赖:requestsjsonjsonpathurllib
  • 修改:你的下载目录路径
  • 关键词:修改keyword
'''*************************************************
Copyright (Python), 2020-,Literature Tech. Co., Ltd.
source:    None
Author:    Written by Literature
Version:   1.0
Date:      2020.07.17
Description:  
Others:   None
Function List:  main
History:  The first edition 2020.05.19
*************************************************'''
import os
import requests
import json
import jsonpath
from urllib.parse import quote
from urllib.request import urlretrieve

# 所请求的url :https://www.duitang.com/napi/blog/list/by_search/?kw=%E5%B0%8F%E5%A7%90%E5%A7%90&start=24
headers = {'User-Agent': 'Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1'}
keyword = '小清新' #可自行指定
kw = quote(keyword)
page_num = input('您一共要爬取几页图片?(每页144张图片):')
page_num = int(page_num)

def get_img_data(kw,start):
    savePath = '/你的下载路径/{}/'.format(keyword)
    if not os.path.exists(savePath):
        os.mkdir(savePath)
    url = 'https://www.duitang.com/napi/blog/list/by_search/?kw={}&start={}'.format(kw,start)
    resp = requests.get(url,headers=headers)
    # 将json数据转化为字典格式
    data_dict = json.loads(resp.text)
    # 从字典中快速得到我们想要的信息($代表根结点下  ..代表任意层次)
    img_pathList = jsonpath.jsonpath(data_dict,'$..path')
    # 通过for循环进行下载
    num = start+1
    for path in img_pathList:
        # 有的图片的jpeg,有的图片是jpg
        img_type = os.path.splitext(path)[-1]#.jpeg   .jpg
        # 有的图片是gif,但是识别到的却是 gif_jpeg,这种图片下载下载就不是动图了,而是10kb左右的低品质图
        if(img_type.find('gif_jpeg')!=-1):
            # 经过细心观察,发现它貌似所有的gif图片的真实路径后面都是thumb.400_0.gif为结尾
            path = path.replace('gif_jpeg','thumb.400_0.gif')
            img_type = '.gif'
        try:
            saveLocation = f'{savePath}{keyword}{num}{img_type}'
            urlretrieve(path,saveLocation)
            print('{}{}{} 下载成功...'.format(keyword,num,img_type) )
            num+=1
        except Exception as e:
            print(e)

def page_download(pageNum):
    offset = 24 #一个数据包24张图片
    onePage = 144 #每页有6个数据包
    for i in range(0,onePage*page_num,offset):
        get_img_data(kw,i)

page_download(page_num)

代码运行效果



【腾讯云】星星海SA2云服务器618钜惠,1核2G 首年95元【点击查看】。


文章: 《利用Python爬取www.duitang.com的图片》
联系方式:
文章链接:https://wxiou.cn/index.php/archives/103/
除特别注明外,文章均为Literature原创,转载时请注明本文出处及文章链接
Last modification:July 24th, 2020 at 06:56 pm
如果觉得我的文章对你有用,请随意赞赏