scrapy图片数据爬取

需求:爬取站长素材中的高清图片

?一.数据解析(图片的地址)?

通过xpath解析出图片src的属性值。
只需要将img的src的属性值进行解析,提交到管道, 管道就会对图片的src进行请求发送获取图片

spider文件

class ImgSpider(scrapy.Spider):
    name = ‘img‘
    # allowed_domains = [‘www.xxx.com‘]
    start_urls = [‘http://sc.chinaz.com/tupian/‘]

    def parse(self, response):
        src_list = response.xpath(‘//div[@id="container"]/div‘)
        # print(src_list)
        for src_item in src_list:
            # 图片懒加载(当浏览器滑动到图片时src2属性变为src属性)
            # scrapy不会滑动到图片,所以使用src2属性(伪属性)
            src_content = src_item.xpath(‘./div/a/img/@src2‘).extract_first()
            print(src_content)
            item = ImgsproItem()
            item[‘src‘] = src_content

            yield item

?二.在管道文件中自定义一个基于ImagesPipeline的一个管道类

实现父类的3个方法
-get_media_requests
-file_path
-item_completed

pipeline文件:

import scrapy
from scrapy.pipelines.images import ImagesPipeline

class ImgsproPipeline(object):
    item = None
    def process_item(self, item, spider):
        return item

# ImagesPipeline用于文件下载管道类,下载过程支持异步和多线程
class ImgPipeLine(ImagesPipeline):
    # 对item中的图片进行请求操作
    def get_media_requests(self, item, info):

        yield scrapy.Request(item[‘src‘])
    # 定制图片的名称
    def file_path(self, request, response=None, info=None):
        imgName = request.url.split(‘/‘)[-1]
        return imgName
    #
    def item_completed(self, results, item, info):
        return item  # 传递到下一个即将被执行的管道类

三.在配置文件中指定图片存储?的目录

IMAGES_STORE =‘./img‘

配置文件:
#USER_AGENT = ‘firstBlood (+http://www.yourdomain.com)‘
USER_AGENT = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36‘  # 伪装请求载体身份
# Obey robots.txt rules
# ROBOTSTXT_OBEY = True
ROBOTSTXT_OBEY = False  #可以忽略或者不遵守robots协议
#只显示指定类型的日志信息
LOG_LEVEL=‘ERROR‘

# 表示最终图片存储的目录
IMAGES_STORE =‘./imgs‘
# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32

# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
   ‘imgsPro.pipelines.ImgsproPipeline‘: 300,
   ‘imgsPro.pipelines.ImgPipeLine‘: 200,
}

原文地址:https://www.cnblogs.com/xiao-apple36/p/12623211.html

时间: 2024-10-11 10:54:34

scrapy图片数据爬取的相关文章

基于CrawlSpider全栈数据爬取

CrawlSpider就是爬虫类Spider的一个子类 使用流程 创建一个基于CrawlSpider的一个爬虫文件 :scrapy genspider -t crawl spider_name www.xxx.com 构造链接提取器和规则解析器 链接提取器: 作用:可以根据指定的规则进行指定连接的提取 提取的规则: allow = "正则表达式" 会先在全局匹配所有的url,然后根据参数allow的规则匹配需要的链接 规则解析器 作用:获取链接提取器提取到的链接,对其进行请求发送,根据

数据挖掘工具分析北京房价 (一) 数据爬取采集

一. 前言 房价永远是最让人头疼且激动的话题,尤其是在帝都,多少人一辈子都为了一套房子打拼.正好我也想用一个大家比较关心的话题作为案例,把目前我开发的这套软件进行一次完整的演练.从数据采集,到清洗,分析,和最终可视化和报告的呈现,实现一次完整的流程.一方面可以给大家切实的分享一些有用的信息,再者可以更好地了解这套软件的使用流程.  关于本工具的介绍,可参考数据挖掘平台介绍(综述)——平台简介. 自然的,文章分为四部分,本节是第一部分:数据爬取和采集. 二.  准备工作 俗话说巧妇难为无米之炊,没

python实现数据爬取-清洗-持久化存储-数据平台可视化

基于python对淘宝模特个人信息进行筛选爬取,数据清洗,持久化写入mysql数据库.使用django对数据库中的数据信息筛选并生成可视化报表进行分析. 数据爬取,筛选,存库: # -*- coding:utf-8 -*-   import requests from bs4 import BeautifulSoup import sys import re reload(sys) sys.setdefaultencoding('utf-8') import MySQLdb import cha

python实现人人网用户数据爬取及简单分析

这是之前做的一个小项目.这几天刚好整理了一些相关资料,顺便就在这里做一个梳理啦~ 简单来说这个项目实现了,登录人人网并爬取用户数据.并对用户数据进行分析挖掘,终于效果例如以下:1.存储人人网用户数据(户主的全部好友.户主好友的全部好友.户主及好友关注的公共主页).2.信息可视化,绘制户主好友间的关系网络图:3.数据挖掘,通过分析户主好友关注的公共主页,向户主推荐公共主页. 项目分为三个部分,各自是人人网登录及用户数据爬取与存储.用户关系可视化.公共主页推荐.以下分别介绍这三个部分. 第一部分实现

Python爬虫 股票数据爬取

前一篇提到了与股票数据相关的可能几种数据情况,本篇接着上篇,介绍一下多个网页的数据爬取.目标抓取平安银行(000001)从1989年~2017年的全部财务数据. 数据源分析 地址分析 http://money.finance.sina.com.cn/corp/go.php/vFD_FinancialGuideLine/stockid/000001/ctrl/2017/displaytype/4.phtml 在浏览器(PC上)中打开这个地址,就可以看到下图显示的财务数据.这个地址是一个通用格式:(

爬虫案例—中基协数据爬取

因为工作原因,需要爬取相关网站的数据,包括中基协网站和天眼查部分数据. 一.中基协网站 爬取思路: 1.查看目标页:http://gs.amac.org.cn/amac-infodisc/api/pof/manager?rand=0.9775162173180119&page=%s&size=50 发现有随机数字串(刷新反爬措施),以及页码和每页信息条数,可以用来拼接爬取url 用一个循环爬取所有展示页面,用到requests库以及random函数生成随机数 返回的是json数据,直接用r

爬虫1.5-ajax数据爬取

目录 爬虫-ajax数据爬取 1. ajax数据 2. selenium+chromedriver知识准备 3. selenium+chromedriver实战拉勾网爬虫代码 爬虫-ajax数据爬取 1. ajax数据 ajax (异步JavaScript 和 XML)(读作阿贾克斯),ajax可以时网页实现异步更新,一般使用的json数据交互,即在不重新加载整个页面也可以对网页的部分进行更新,ajax技术加载的数据在网页源代码中是看不到的,只能看到url加载的html部分 获取ajax数据的两

requests实例4:图片的爬取与保存

requests实例4:图片的爬取与保存 代码框架: 1 # coding=gbk 2 import requests 3 import os 4 url = "http://image.nationalgeographic.com.cn/2017/0211/20170211061910157.jpg" 5 root = "D://pics//" 6 path = root + url.split('/')[-1] 7 try: 8 if not os.path.e

Python爬虫入门教程 15-100 石家庄政民互动数据爬取

1. 石家庄政民互动数据爬取-写在前面 今天,咱抓取一个网站,这个网站呢,涉及的内容就是 网友留言和回复,特别简单,但是网站是gov的.网址为http://www.sjz.gov.cn/col/1490066682000/index.html 首先声明,为了学习,绝无恶意抓取信息,不管你信不信,数据我没有长期存储,预计存储到重装操作系统就删除. 2. 石家庄政民互动数据爬取-网页分析 点击更多回复 ,可以查看到相应的数据. 数据量很大14万条,,数据爬完,还可以用来学习数据分析,真是nice 经