安装依赖

pip install pillow

建立蜘蛛项目

scrapy startproject images_spider
cd  images_spider
scrapy genspider five_three_images 53pic.com

settings.py
这个配置把这些整上

LOG_LEVEL = "WARNING"
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 2 # 这个时间得加,这个框架是异步的,得让它慢点
ITEM_PIPELINES = {'images_spider.pipelines.ImagesSpiderPipeline': 300,
}
# 图片保存路径  -> ImagesPipeline
IMAGES_STORE = 'beautiful_girl'
# 文件保存路径 -> FilesPipeline
FILES_STORE = 'beautiful_girl'

蜘蛛的文件
five_three_images.py

import scrapy
from bs4 import BeautifulSoupfrom images_spider.items import ImagesSpiderItem"""
我用bs熟悉了,所以下面解析用的bs,基本的代码我就不解释了
"""
class FiveThreeImagesSpider(scrapy.Spider):name = 'five_three_images'allowed_domains = ['53pic.com']start_urls = ['https://www.53pic.com/bizhi/meinv/index.html']def parse(self, response, **kwargs):soup = BeautifulSoup(response.text, 'lxml')div_images_list = soup.find('div', attrs={'class': 'work-list-box'}).find_all('div',attrs={'class': 'card-box'})for div_images in div_images_list:images_info = div_images.find('a')images_href = images_info['href']images_detail_href = response.urljoin(images_href)print(f'爬取图片名称:{images_info["title"]},爬取图片url:{images_detail_href}')yield scrapy.Request(url=images_detail_href,  # scrapy的url拼接method='get',callback=self.parse_detail,)# 这个地方的逻辑就是让他返回request,按照scrapy的框架的走法,让他绕一圈,最后让他回调到下面那个parse_detail函数上# break  # 测试爬第1页1个,就测试爬第2页第1个,测试爬第3页第1个,然后退出
"""
这下面的逻辑就是翻页,从下一页这个标签去找href,计算出页数,然后就可以控制抓取几页的图片,(也可以猛一点,只要有next_page就一直抓,直到没有为止),后边找出页面,还是让他返回request,交给自己 parse 这个函数,我这里没写请求的url ,可以优化加上
关于Request()的参数:url: 请求地址method: 请求方式callback: 回调函数errback: 报错回调dont_filter: 默认False, 表示"不过滤", 该请求会重新进行发送headers: 请求头. cookies: cookie信息"""next_page = soup.find('a', text='下一页')['href']page_number = next_page.split('/')[-1].split('.')[0].split('_')[1]next_url = response.urljoin(next_page)if int(page_number) <= 3:  # 这样可以控制页数就爬3页yield scrapy.Request(url=next_url,  # scrapy的url拼接method='get',callback=self.parse,)
"""
这个函数没啥,就是解析图片信息,返回item,我们再造一个item
"""def parse_detail(self, response, **kwargs):soup = BeautifulSoup(response.text, 'lxml')images_source_title = soup.find('h2').textimages_detail_info = soup.find('div', attrs={'class': 'cl mbv'}).find('img')images_source_src = images_detail_info['src']images_items = ImagesSpiderItem()images_items['images_source_title'] = images_source_titleimages_items['images_source_src'] = images_source_srcyield images_items

items.py

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.htmlimport scrapyclass ImagesSpiderItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()images_source_title = scrapy.Field()images_source_src = scrapy.Field()images_path = scrapy.Field() #这个后边会用到

最后就是流水线了
pipelines.py

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html# useful for handling different item types with a single interface
import scrapy
from itemadapter import ItemAdapter
from scrapy.pipelines.images import ImagesPipelinefrom images_spider import settings# 需要scrapy的管道帮我完成一些事儿. 必须有scrapy的管道来参与一些动能
class ImagesSpiderPipeline(ImagesPipeline): # 继承# def process_item(self, item, spider):#     return itemdef get_media_requests(self, item, info): # 给urlimages_url = item['images_source_src']"""# 如果一次性多个图片.可以考虑用循环 + yield返回多次请求# 请求只要发出去即可. 不用管返回, ImagesPipeline自动保存文件# meta 这个东西,就可以把item这个东西一直给传下去,没有这个图片的信息会传不下去"""yield scrapy.Request(url=images_url, meta={"item": item}) def file_path(self, request, response=None, info=None, *, item=None): # 给路径item = request.meta["item"]images_title = item['images_source_title']return f'{images_title}.jpg'"""# 最后的问题.# 其他的管道里面可能会用到图片的保存路径"""def item_completed(self, results, item, info):status, r = results[0]file_path = settings.IMAGES_STORE + '/' + r['path']item['images_path'] = file_pathreturn item

启动爬虫

scrapy crawl five_three_images

最后的结果,我这里就简单展示一下

scrapy教你抓取美女高清大图相关推荐

  1. cutycapt php,PHP利用CutyCapt获取网页快照,抓取网页高清图片快照(教程)

    PHP利用CutyCapt获取网页快照,抓取网页高清图片快照(教程): // +------------------------------------------------------------ ...

  2. 全网最细------爬取4k高清大图

    本次案例将教大家免费爬取4k高清大图,即使你是爬虫新手,也可以食用本次文章实现你的免费下载梦,话不多说,先看效果 网站视图: 看到这些图片你是否怦然心动,跟着我一起看下去. 一.思路分析 首先最基本的 ...

  3. 【Python爬虫实战】爬取IU高清大图

    文章目录 一.准备工作 二.具体分析 三.具体步骤 (1)将HTML文本提取出来 (2)第一步解析获得各个图集网址 (3)第二步解析获得图集中每张图片所在页面网址 (4)第三步解析获得每张图片网址 ( ...

  4. 源代码src修改为本地图片_20 行 Python 代码批量抓取免费高清图片!

    前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...

  5. 20行Python 代码批量抓取免费高清图片!

    前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...

  6. 20 行 Python 代码批量抓取免费高清图片!

    前言 相信在你的工作中可能会经常用到PPT吧,你在PPT制作过程中有没有这样的困惑,就是可以到哪里找到既高清又无版权争议的图片素材呢?这里强烈推荐ColorHub,这是一个允许个人和商业用途的免费图片 ...

  7. python:抓取必应高清壁纸第一张并设置为壁纸 修改注册表 重启壁纸不丢失

    # -*- coding: utf-8 -*- import requests from lxml import etree #import re from re import split #bing ...

  8. python 阴阳师 识别图像_Python爬虫练习:爬取阴阳师高清大图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本环境配置 python 3.6 pycharm requests 相关模块pip安装即可 ...

  9. python爬取图解_20行PYTHON代码爬取微博高清大图,小白练手绝佳案例

    0. 前戏说明 环境说明 python3版本 所需库:Beautifulsoup .re .requests 知识点:正则表达式.基本网页请求与解析.文件写入 适用人群:小白 最终目标:20行代码爬取 ...

最新文章

  1. ADSL上网常见错误提示
  2. Grafana中整个Dashboard报错问题解决
  3. python写的购物车程序
  4. 2020年短视频用户价值研究报告
  5. 鬼题Ghost [manacher]
  6. Unreal Engine 4 —— 使用反汇编来确定该进行优化的地方
  7. 设计素材画面太平淡?优秀案例网页教你如何用色彩丰富画
  8. 如果在安卓后台杀死程序怎么进行保存
  9. android 文件管理 显示缩略图,android将缩略图保存到缩略图文件夹_android_开发99编程知识库...
  10. signature=c9b7b92b79e9a32ac6be9993bfe5df5a,GBA金手指
  11. Drill模块——孔加工与螺纹铣削
  12. go TCP 粘包原理和解决方案
  13. 1001系列之案例0003如何对欧洲人口普查数据集整理挖掘
  14. 实例讲解反向传播(简单易懂)
  15. 网络安全如何“疏而不漏”,了解一下锐捷大数据安全平台“降维攻击”
  16. java locale string_java.lang.String.toUpperCase(Locale locale)方法实例
  17. 建设世界仪器强国的使命与任务
  18. 骞云科技 python_骞云科技SmartCMP6.0版本正式发布!
  19. 高端访谈实录:访思科英国CEO菲尔·史密斯
  20. 做一个温暖如春的女子

热门文章

  1. 码率控制中的“鸡生蛋蛋生鸡”的悖论
  2. Python入门 第二节
  3. WF曲速未来消息:以自定义格式反转恶意软件|隐藏的蜜蜂元素
  4. 文献阅读_基于线上评论的区域消费环境放心度与空间特征研究(中文文献)
  5. ORA-27101: shared memory realm does not exist
  6. Android开发UI之隐藏导航栏
  7. 图深度学习:成果、挑战和未来[AI前沿技术]
  8. macOS装机必备应用下载合集(2018年8月更新)
  9. 多目标优化算法|用于全局和工程设计优化的多目标原子轨道搜索 (MOAOS)算法(Matlab代码实现)
  10. 简单的Unity升级UI功能表现