python url拼接_教你写python爬虫——用python爬原图

环境:python3.6 + pycharm

“猎物”:http://www.polayoutu.com (仅学习用)

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

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


一、分析目标网站:

1.寻找URL:

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

http://www.polaxiong.com/collections/get_entries_by_collection_id/140?{}”

8ef131ff2806277a92e59c50f7e86a43.png

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

ad63d4ffb292f339d0ce94ec07c04682.png

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

ad63d4ffb292f339d0ce94ec07c04682.png

aee05b2ce8c2d9edb93b8dafd747a44e.png

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

b4f603705ac02ed862eeccc0789436c4.png

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

fa0ca16f5fe68a0e613d50027421cf6b.png

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

#!/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)

三、我们看一下效果:

459ec1dae46a8c82418e18905659db8a.png

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

9f8e4deb4ac2392894fc391e60b84ed1.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值