首页 > 其他分享 >Scrapy爬虫框架 -- 图片爬取

Scrapy爬虫框架 -- 图片爬取

时间:2023-04-07 23:38:14浏览次数:33  
标签:scrapy tupian -- 地址 爬取 item Scrapy div 图片

一、新建一个tupian爬虫项目

scrapy startproject tupian

二、进入到tupian项目,新建一个image爬虫文件

cd tupian
scrapy genspider image www.xxx.com

三、修改配置文件settings

ROBOTSTXT_OBEY = False
LOG_LEVEL = 'ERROR'
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"

四、指定要爬取的页面

start_urls = ["https://sc.XXXX/kejitupian.html"]

五、获取图片的地址

def parse(self, response):
    图片列表= response.xpath('/html/body/div[3]/div[2]/div')
    '/html/body/div[3]/div[2]/div[1]'
    '/html/body/div[3]/div[2]/div[1]/img'
    for i in 图片列表:
        图片地址 ='https:'+i.xpath('./img/@data-original').extract_first()
        print(图片地址)

六、构建items对象

链接地址 = scrapy.Field()

七、将item对象导入爬虫文件,并实例化该对象

from ..items import TupianItem
for i in 图片列表:
    图片地址 ='https:'+i.xpath('./img/@data-original').extract_first()
    item对象=TupianItem()
    item对象['链接地址']=图片地址
    yield item对象

八、新建管道类,并导入ImagesPipeline

from scrapy.pipelines.images import ImagesPipeline
class 图片管道类(ImagesPipeline):
    def get_media_requests(self, item, info):
        图片地址=item['链接地址']
        yield scrapy.Request(图片地址)
    def file_path(self, request, response=None, info=None, *, item=None):
        图片名称 =request.url.split('/')[-1]
        return 图片名称
    def item_completed(self, results, item, info):
        return item

九、开启管道,由于不是默认的管道类,所以需要修改一下

ITEM_PIPELINES = {
   "tupian.pipelines.图片管道类": 300,
}

十、指定图片保存的路径

IMAGES_STORE='图片夹'

十一、启动爬虫

scrapy crawl image

十二、运行结果

Scrapy爬虫框架 -- 图片爬取_配置文件

标签:scrapy,tupian,--,地址,爬取,item,Scrapy,div,图片
From: https://blog.51cto.com/u_15288375/6176563

相关文章

  • 主流的开源监控介绍
    监控通常的基本架构被监控的系统可以是独立的应用程序或服务的集合,也可以是单独的应用程序。如果系统主动地提供了被监控的数据,那么监控是入侵式的且影响系统设计;如果系统不主动提供被监控的数据,那么监控是非入侵的。外部系统可以通过健康检查、性能或事务监控来监控系统或者应用级......
  • 【C】动态内存管理 malloc calloc relloc free 函数详解
    【C】动态内存管理@[toc]本章重点为什么存在动态内存分配动态内存函数的介绍mallocfreecallocrealloc常见的动态内存错误几个经典的笔试题1.为什么存在动态内存分配我们已经掌握的内存开辟方式有:#include<stdio.h>intmain(){ intnum=10;//向内存申请了4个字节的空间 int......
  • gluster迁移brick故障
    前言:笔者的环境是三个节点的gluster集群,用的是分布式复制卷,由于数据量日益增大,需要增加brick以扩容,本篇文章将介绍brick扩缩容的常见故障及解决方法。基础操作命令:(1)添加brickglustervolumestopmybackupglustervolume add-brickmybackupreplica3glusterfs-a:/storage/phd4......
  • Docker 从入门到精通(二) 搭建本地仓库
    一,本地安装#yuminstall-ypython-devellibevent-develpython-pipgccxz-devel#pipinstalldocker-registry也可以从docker-registry(https://github.com/docker/docker-registry)项目下载源码进行安装。二,使用官方registry镜像#dockerrun-d-p5000:5000registry......
  • drop、truncate和delete的区别
    drop、truncate和delete的区别##删除表和数据结构droptabletestTable##(常用)只是清空数据表删除表中所有记录,并且将重新设置高水线和所有的索引truncatetabletestTable(1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志......
  • Kubernetes 基础入门
    一、Kubernetes简介一、背景1、部署方式的变迁传统时代的部署在物理服务器上运行应用程序无法为应用程序定义资源边界导致资源分配问题例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况,结果可能导致其他应用程序的性能下降。......
  • #yyds干货盘点#学习笔记(1)Linux和Windows上实现端口映射
    一、Windows下实现端口映射1.查询端口映射情况netshinterfaceportproxyshowv4tov42.查询某一个IP的所有端口映射情况netshinterfaceportproxyshowv4tov4|find"[IP]"例:netshinterfaceportproxyshowv4tov4|find"192.168.1.1"3.增加一个端口映射netshinterfa......
  • #yyds干货盘点#使用tkinter中的按钮开始/停止循环
    通过使用两个不同的按钮,我试图启动和停止一个基于while循环的进程,该循环扫描整个模式(在本例中实际上只是计数)。在下面的代码中,我试图简化和概括我正在处理的实际项目中发生的更复杂的过程。正如您通过运行代码所看到的,您可以通过按play按钮来开始计数;但是,当您按下stop按钮时,该过......
  • BRUP使用技巧——对BASE64编码的密码进行爆破
    一、对某系统进行安全测试,检查登录页面的安全性可以看到用户名、密码等信息以POST的方式进行提交,POST内容示例如下:{"sign":"encodebybase64","ts":123456,"loginType":"xx"}二、对BASE64进行解码通过解码可以看到其格式为{"username":"admin","password":&qu......
  • Aws上如何设置受限权限的账号
    近期,老板安排了一个要求,希望给新来的员工一个IAM用户,拥有除了修改其他用户信息之外,可以访问其他一切资源。同时,要求这个用户可以自己修改密码。PowerUserAccess经过查询官方资料,发现PowerUserAccess符合这个要求,貌似管理员之外的所有权限都满足。https://docs.aws.amazon.com/zh_cn......