Python Scrapy图片爬取原理及代码实例
作者:Hedger_Lee 发布时间:2022-04-29 05:51:06
标签:Python,Scrapy,图片,爬取
1.在爬虫文件中只需要解析提取出图片地址,然后将地址提交给管道
在管道文件对图片进行下载和持久化存储
class ImgSpider(scrapy.Spider):
name = 'img'
# allowed_domains = ['www.xxx.com']
start_urls = ['http://www.521609.com/daxuemeinv/']
url = 'http://www.521609.com/daxuemeinv/list8%d.html'
pageNum = 1
def parse(self, response):
li_list = response.xpath('//*[@id="content"]/div[2]/div[2]/ul/li')
for li in li_list:
img_src = 'http://www.521609.com'+li.xpath('./a[1]/img/@src').extract_first()
item = ImgproItem()
item['src'] = img_src
yield item
2.配置文件修改
配置文件要增加IMAGES_STORE = './imgsLib'表明图片存放的路径
3.管道类的修改
原本管道类继承的object,处理item对象使用时process_item方法,该方法不能发送请求,要想对图片地址发送请求,需要继承ImagesPipeline类,然后重写该类中的三个方法:get_media_requests,file_path,item_completed
from scrapy.pipelines.images import ImagesPipeline
import scrapy
class ImgproPipeline(ImagesPipeline):
#对某一个媒体资源进行请求发送
#item就是接收到的spider提交过来的item
def get_media_requests(self, item, info):
yield scrapy.Request(item['src'])
#制定媒体数据存储的名称
def file_path(self, request, response=None, info=None):
name = request.url.split('/')[-1]
print('正在下载:',name)
return name
#将item传递给下一个即将给执行的管道类
def item_completed(self, results, item, info):
return item
来源:https://www.cnblogs.com/Hedger-Lee/p/13072581.html
0
投稿
猜你喜欢
- 一、开发工具**Python****版本:**3.6.4相关模块:DecryptLogin模块;argparse模块;以及一些Python自
- 本文实例为大家分享了python matplotlib实现条形图填充效果的具体代码,供大家参考,具体内容如下写专利用的python里面的ma
- 零、SQLAlchemy是什么?SQLAlchemy的官网上写着它的介绍文字:SQLAlchemy is the Python SQL to
- 1,建路由;2,写方法;def fanyi(request): import requests import jso
- 使用celery在django项目中实现异步发送短信在项目的目录下创建celery_tasks用于保存celery异步任务。在celery_
- 不同数据库之间若不能导入导出,那么将是一件可怕的事情,所幸的是一般情况下通过不同的方法和途径,都可以实现,方法有多种,本人提供其中的一个,提
- 一、日志级别1. 级别定义logging模块提供了5种日志级别,分别为:CRITICAL>ERROR>WARNING>IN
- 工资excel表格格式如下所示:使用python批量给每位员工发送工资条信息,格式如下:思路:首先是加载excel,获取当前sheet表格s
- Django是一个基于Python Web框架的高级Web框架,允许快速开发和干净,务实的设计。今天,我们将创建一个待办事项应用程序,以了解
- 前言sort包中实现了3种基本的排序算法:插入排序.快排和堆排序.和其他语言中一样,这三种方式都是不公开的,他们只在sort包内部使用.所以
- SQL Server数据库查询优化的常用方法总结:本文中,abigale代表查询字符串,ada代表数据表名,alice代表字段名。技巧一:问
- 从概念上讲,大多数关系数据库系统都是类似的:它们都由一组数据库组成,且每个数据库都包含一组表。但是,所有的系统都有自己的管理数据的方法, M
- 几个利用背景结合a:hover做的小东东,希望对大家有所帮助。<!DOCTYPE html PUBLIC "-//W3C//
- 各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男"1.二维绘图a. 一维数据集用 Numpy nd
- AddHeaderAddHeader 方法用指定的值添加 HTML 标题。该方法常常向响应添加新的 HTTP 标题。它并不替代现有的同名标题
- 项目一开始的设计很重要,django中app的名称建议用小写我的博客由两个app组成,Blog和JiaBlog,总觉得不美观,想改成小写的o
- 当今越来越多的应用程序迁移到web平台上。由于没有平台的限制和安装的要求,SAAS的模式看起来非常有吸引力。Web应用程序的界面设计,其核心
- 一、前言准备编写一个篮球游戏,运动员带球跑,跳起投篮。在每帧图片中包括运动员和篮球,使用多帧图片,实现运动员运球跑动的效果。运动员运球跑动作
- //定义一个对象数组 var data = [{ name: "jiang", age: 22 }, { name: &
- 运行时请在其目录下添加user.txt passwd.txt两文件。否则会报错。程序没有加异常处理。代码比较挫.....#coding:ut