零基础爬取堆糖网图片(一)

全文介绍:

首先堆糖网是一个美图壁纸兴趣社区,有大量的美女图片
今天我们实现搜索关键字爬取堆糖网上相关的美图。
当然我们还可以实现多线程爬虫,加快爬虫爬取速度

01.png

涉及内容:

  1. 爬虫基本流程
  2. requests库基本使用
  3. urllib.parse模块
  4. json包
  5. jsonpath库

图例说明:

  1. 请求与响应
sequenceDiagram
浏览器->>服务器: 请求
服务器-->>浏览器: 响应
  1. 爬虫基本流程
graph TD
A[目标网站] -->|分析网站| B(url)
B --> C[模拟浏览器请求资源]
C -->D[解析网页]
D-->E[保存数据]

正文:

1. 分析网站

1.1 目标网址:https://www.duitang.com/
1.2 关键字:
02.png

值得注意的是url当中是不能有汉字的,所以真正的url是这样的:

https://www.duitang.com/search/?kw=%E7%BE%8E%E5%A5%B3&type=feed
思路:

import urllib.parse

label = '美女'
label = urllib.parse.quote(label)
# 输出:%E7%BE%8E%E5%A5%B3
1.3 数据源:

首先,这个网站的数据是瀑布流式的加载方式。

瀑布流举例说明:你去一个饭店,直接开口要十碗烩面,这个时候老板开始下面给你吃😏。然后你发现当你吃完第一碗面,你就吃不下了。这个时候,剩下的面就算白做了。所以,下次你在去饭店,还是直接开口要十碗面,这时,老板聪明了,下一碗面,你吃一碗,你还需要,就在去下面。这样就不会浪费。

针对这种数据加载,需要抓包

03.png

2. 导库

import urllib.parse
import json
import requests
import jsonpath

3. 模拟浏览器请求资源

we_data = requests.get(url).text

4. 解析网页

因为是json文件,所以直接用jsonpath工具提取数据

# 类型转换
html = json.loads(we_data)
photo = jsonpath.jsonpath(html,"$..path") 
print(photo)

得到图片的链接

5. 保存数据

num = 0
for i in photo:    
    a = requests.get(i)   
    with open(r'tupian\{}.jpg'.format(num),'wb') as f: 
        #  content 二进制流
        f.write(a.content)
        num += 1

效果:

04.png
05.jpg
06.jpg

完整代码:

所以,以此为动力,又实现了翻页,下面是简单的全部代码(代码为了零基础小白看懂,大神勿喷)

import urllib.parse
import json
import requests
import jsonpath
url = 
'https://www.duitang.com/napi/blog/list/by_search/?kw={}&start={}'
label = '美女'
# 关键字
label = urllib.parse.quote(label)
num = 0
# 翻页  24的间隔
for index in range(0,2400,24):    
    u = url.format(label,index)    
    we_data = requests.get(u).text    
    html = json.loads(we_data)    
    photo = jsonpath.jsonpath(html,"$..path")
    # 遍历每页的图片链接
    for i in photo:        
        a = requests.get(i)
        # wb 二进制写入
        with open(r'tupian\{}.jpg'.format(num),'wb') as f: 
            # content 二进制流
            f.write(a.content)        
    num +=1

PS:
问题可以评论区提出

07.png

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 本博客主要记录跟随崔庆才老师的分析Ajax抓取今日头条街拍美图学习的整个过程,更多精品文章,请参阅崔老师的博...
    小白猿阅读 4,786评论 3 10
  • 16/2/2017《超级个体》gd1026 一、知识概要重点 未来职业世界将由三种人组成,媒体人,运营人,产品人,...
    吾爱庐阅读 3,968评论 0 0
  • 第1章 文件上传 1.1 客户端上传设置 ​ 在 B/S 程序中文件上传已经成为一个常用功能。其目的是...
    ql5307阅读 1,859评论 0 0
  • “美丽的姑娘见过万万千,独有你呀最可爱! 你像冲出朝霞的太阳,无比新鲜啊,姑娘啊!” Sunshine on my...
    66e1ba940d65阅读 2,865评论 0 0
  • 你毕业了吗?你过得好吗? 从来没想过毕业的我,居然只有四天,就再也不能说自己是学生了。 不舍、焦虑、迷惘…… 从来...
    偶然与光阴阅读 1,722评论 0 0