使用Python3爬虫爬取图片

Python3爬虫爬取图片

最近看完了崔庆才先生的《Python3网络爬虫开发实战》,了解了不少的新知识。现在打算找几个项目练手。但是我暂时没有什么很好的想法,那么就先从美女图开始爬起吧!
以下是基本思路:

网页布局分析:
在这里插入图片描述
整个网页结构很清晰,上边一张大图,下边是几张小的缩略图,大图上有一个切换下一张的按钮。看美女当然是画质优先,所以我们的目标是爬取这些美女图的原图。
按下F12进入开发者模式,看一下有什么‘可疑的地方’
在这里插入图片描述
选择最大的图片,在查看器中看到是一个img标签,在这个img标签中有两个src,两个都试一下,直接双击并复制,粘贴到地址栏访问。
在这里插入图片描述
从第一个链接中得到的图片明显要大一些,所以要爬取的话肯定是爬取第一个src中的图片。
同时发现两个链接的后缀都是t…jpg的形式,由此推断该串文字为该图片的id,将其他图片的id按照格式复制到链接中一试,果然。
再看一下缩略图的标签是怎么样的:
在这里插入图片描述
只有一个src链接,但是访问得到的却是小的缩略图,这肯定是不能要的,那怎么办?难道要用python一次一次点击缩略图吗?
肯定不行!将开发者窗口调到网络窗口,将filter调至XHR,观察ajax请求,点击缩略图旁边的按钮请求下一组图片,在网络窗口中发现新增了一条ajax请求,再查看响应,这条请求就是图片的请求,于是爬取的方式基本确定:分析ajax请求并爬取图片。同时在上边的步骤中我们了解到,每张图片都有其唯一的imgkey,我们只需要获取每张图片的imgkey并通过特定网页的请求就可以获取到这张图片。

现在分析ajax请求:
通过网络窗口采集到的ajax请求我们发现,请求采用的是get方法。

https://image.so.com/z?ch=beauty&a=jsonpViewScroll&i=5&count=30

并且可以发现,每次请求都只有参数i变化,每次递增4,于是我们可以构造一个循环来实现对图片的批量请求:
编写代码如下:
main.py

import requests
import json

base_url = 'https://image.so.com/z?ch=beauty&t1=625&a=jsonpViewScroll&i={}&count=30'

results = []

for i in range(1, 33):
    url = base_url.format(i*4)
    response = requests.get(url)
    datas = response.json()['data']
    for data in datas:
        for info in data['groupdata'
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值