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

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

全文介绍:

首先堆糖网是一个美图壁纸兴趣社区,有大量的美女图片

今天我们实现搜索关键字爬取堆糖网上相关的美图。

当然我们还可以实现多线程爬虫,加快爬虫爬取速度

涉及内容:

  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 关键字:

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

https://www.duitang.com/search/?kw=美女&type=feed

思路:

import urllib.parse

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

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

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

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

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

效果:

完整代码:

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

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:

问题可以评论区提出

原文地址:https://www.cnblogs.com/mark-wq/p/12643806.html

时间: 2024-10-09 00:35:58

零基础爬取堆糖网图片(一)的相关文章

Python 爬取堆糖图片

1 import requests,json,urllib.parse 2 import threading 3 threading_lock=threading.BoundedSemaphore(value=10)#设置最大线程 4 5 def get_page(url): 6 page=requests.get(url) 7 page=page.content 8 page=page.decode('utf-8') 9 return page 10 11 def pages_from_dui

python3网络爬虫(2.1):爬取堆糖美女

额,明明记得昨晚存了草稿箱,一觉醒来没了,那就简写点(其实是具体怎么解释我也不太懂/xk,纯属个人理解,有错误还望指正) 环境: 版本:python3 IDE:pycharm2017.3.3 浏览器:火狐(浏览器建议火狐,Chrome) 爬取网站:堆糖 选堆糖是因为比较好爬取(除了img文件就是xhr文件),别网站的反爬取对我这个水平来说都太心机了 安装配置什么的之前都写过,这里就不提了,直接开始 1.先来浏览一下这个网站,打开堆糖官网,搜索校花,他就会给我们推荐一些图片,当我们滚动到页面底部时

爬虫练习3 爬取堆糖网校花照片

知识点: 多线程的实现图片的下载及写入字符串高级查找了解动态加载和jsonrequest 的用法 获取数据的api'https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%A0%A1%E8%8A%B1&start=0&limt=1000'图片路径 "path": "https://b-ssl.duitang.com/uploads/item/201509/18/20150918195615_JfdKm.

python爬取煎蛋网图片

py2版本: #-*- coding:utf-8 -*-#from __future__ import unicode_literimport urllib,urllib2,timeimport re,sys,osheaders={'Referer':'http://jandan.net/','User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2

python 爬取煎蛋网图片

__author__ = mkdir(path):     os     path = path.strip()  path = path.rstrip()  mkfile = os.path.exists(path)     mkfile:         ()     :         os.makedirs(path)         () urllib, urllib2, re geturl(url):     file_lists = []     req = urllib2.Req

python3爬虫爬取煎蛋网妹纸图片

其实之前实现过这个功能,是使用selenium模拟浏览器页面点击来完成的,但是效率实际上相对来说较低.本次以解密参数来完成爬取的过程. 首先打开煎蛋网http://jandan.net/ooxx,查看网页源代码.我们搜索其中一张图片的编号,比如3869006,看下在源代码中是否能找到图片链接 从上面的HTML结构中找到这个标号对应的一些属性,没有直接的图片链接地址,只有一个src=//img.jandan.net/blank.gif,这很明显不是个真实的链接地址,因为每一个图片编号都有这个值.我

Python 爬取煎蛋网妹子图片

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2017-08-24 10:17:28 4 # @Author : EnderZhou ([email protected]) 5 # @Link : http://www.cnblogs.com/enderzhou/ 6 # @Version : $Id$ 7 8 import requests 9 from bs4 import BeautifulSoup as bs

第一篇博客(python爬取小故事网并写入mysql)

前言: 这是一篇来自整理EVERNOTE的笔记所产生的小博客,实现功能主要为用广度优先算法爬取小故事网,爬满100个链接并写入mysql,虽然CS作为双学位已经修习了三年多了,但不仅理论知识一般,动手能力也很差,在学习的空余时间前前后后DEBUG了很多次,下面给出源代码及所遇到的BUG. 本博客参照代码及PROJECT来源:http://kexue.fm/archives/4385/ 源代码: 1 import requests as rq 2 import re 3 import codecs

python爬虫入门练习,使用正则表达式和requests爬取LOL官网皮肤

刚刚python入门,学会了requests模块爬取简单网页,然后写了个爬取LOL官网皮肤的爬虫,代码奉上 #获取json文件#获取英雄ID列表#拼接URL#下载皮肤 #导入re requests模块 import requestsimport reimport time def Download_LOL_Skin(): #英雄信息Json文件地址:https://lol.qq.com/biz/hero/champion.js #获取英雄信息列表 json_url = "https://lol.