怎么用python爬图_教你写python爬虫——用python爬原图

  • Post author:
  • Post category:python


环境:python3.6 + pycharm

动机1:想要爬一些尺寸比较大(不是尺度)的美图养养眼,仅此而已;

动机2:学习python爬虫,要学以致用

一、分析目标网站:

1.寻找URL:

摄影图片是分期展示的,我们滚动页面,滚动到140期,看到请求的URL如下:

2.大胆猜测:URL地址中”?{}”去掉可不可以?我们做一个尝试,直接输入,得到的是一个json字符串(我个人还是蛮喜欢json字符串的,因为它跟字典互相转换,炒鸡爽!)

3.看!有情报,data字段对应的value里有0-11编号的数据,展开其中一个,看到文件描述,心里乐开花,这不正是页面上图片的描述吗?而且,“full_res”字段对应的value,就是我们要找到原图URL。

4.尝试打开full_res的url地址,查看图片大小:2.9M,这肯定是原图啊,哪个网站缩略图能有2.9M的?

5.接下来,我们要做的就是把json字符串转成字典,取出full_res的值

二.以下是完整爬虫代码:

#!/bin/python

# coding = utf-8

# 本python爬虫仅用于学习

import urllib.request

import os, pathlib

import threading

import time

import json

import requests

path = r’C://IM/pic//’ # 使用前先创建此目录,否则会报错

header = {‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1′}

def check_dir(path):

if not os.path.exists(path):

os.makedirs(path)

print(“目录创建成功,开始下载…”)

else:

print(“目录已存在,开始下载…”)

# 下载图片文件

def save_img(url, path, name):

try:

urllib.request.urlretrieve(url, “%s%s” % (path, name))

# time.sleep(10)

except Exception as e:

# 通过try -except 来捕获异常,当目录不存在时会抛出异常

print(e)

def get_img(url, header, path):

try:

js_content = requests.get(url, headers=header).content # 发送request请求

js_dict = json.loads(js_content) # 将json字符串转成python字典格式

new_dict = js_dict[‘data’] # 取出data对应value值

for i in range(len(new_dict)):

file_url = new_dict[i][‘full_res’] # 遍历得到full_res对应的原图地址

file_name = file_url.split(‘/’)[4]+’_’+file_url.split(‘/’)[5]+’.jpg’ # 拼接文件名:“期号_图片编号.jpg”

save_img(file_url, path, file_name) # 下载图片文件,并保存到本地

print(“%s:已下载” % file_name)

except Exception as e:

print(e)

if __name__ == ‘__main__’:

check_dir(path)

for num in range(10, 100): # 这里是从10期到100期循环遍历

# 拼接URL地址

url = ‘http://www.polaxiong.com/collections/get_entries_by_collection_id/’+str(num)

get_img(url, header, path)

三、我们看一下效果:

2张图片大小共19M,下载的是原图!



版权声明:本文为weixin_32154667原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。