Scrapy图像下载

2023-12-19

我的蜘蛛运行时没有显示任何错误,但图像未存储在文件夹中,这是我的 scrapy 文件:

蜘蛛.py:

import scrapy
import re
import os
import urlparse
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.loader.processors import Join, MapCompose, TakeFirst
from scrapy.pipelines.images import ImagesPipeline
from production.items import ProductionItem, ListResidentialItem

class productionSpider(scrapy.Spider):
    name = "production"
    allowed_domains = ["someurl.com"]
    start_urls = [
        "someurl.com"
]

def parse(self, response):
    for sel in response.xpath('//html/body'):
        item = ProductionItem()
        img_url = sel.xpath('//a[@data-tealium-id="detail_nav_showphotos"]/@href').extract()[0]
        yield scrapy.Request(urlparse.urljoin(response.url, img_url),callback=self.parseBasicListingInfo,  meta={'item': item})

def parseBasicListingInfo(item, response):
    item = response.request.meta['item']
    item = ListResidentialItem()
    try:
        image_urls = map(unicode.strip,response.xpath('//a[@itemprop="contentUrl"]/@data-href').extract())
        item['image_urls'] = [ x for x in image_urls]
    except IndexError:
        item['image_urls'] = ''

    return item

设置.py:

from scrapy.settings.default_settings import ITEM_PIPELINES
from scrapy.pipelines.images import ImagesPipeline

BOT_NAME = 'production'

SPIDER_MODULES = ['production.spiders']
NEWSPIDER_MODULE = 'production.spiders'
DEFAULT_ITEM_CLASS = 'production.items'

ROBOTSTXT_OBEY = True
DEPTH_PRIORITY = 1
IMAGE_STORE = '/images'

CONCURRENT_REQUESTS = 250

DOWNLOAD_DELAY = 2

ITEM_PIPELINES = {
    'scrapy.contrib.pipeline.images.ImagesPipeline': 300,
}

items.py

# -*- coding: utf-8 -*-
import scrapy

class ProductionItem(scrapy.Item):
    img_url = scrapy.Field()

# ScrapingList Residential & Yield Estate for sale
class ListResidentialItem(scrapy.Item):
    image_urls = scrapy.Field()
    images = scrapy.Field()

    pass

我的管道文件是空的,我不确定应该添加到 pipeline.py 文件中的内容。

任何帮助是极大的赞赏。


我的工作最终结果:

蜘蛛.py:

import scrapy
import re
import urlparse
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.loader.processors import Join, MapCompose, TakeFirst
from scrapy.pipelines.images import ImagesPipeline
from production.items import ProductionItem
from production.items import ImageItem

class productionSpider(scrapy.Spider):
    name = "production"
    allowed_domains = ["url"]
    start_urls = [
        "startingurl.com"
    ]

def parse(self, response):
    for sel in response.xpath('//html/body'):
        item = ProductionItem()
        img_url = sel.xpath('//a[@idd="followclaslink"]/@href').extract()[0]
        yield scrapy.Request(urlparse.urljoin(response.url, img_url),callback=self.parseImages,  meta={'item': item})

def parseImages(self, response):
    for elem in response.xpath("//img"):
        img_url = elem.xpath("@src").extract_first()
        yield ImageItem(image_urls=[img_url])

设置.py

BOT_NAME = 'production'

SPIDER_MODULES = ['production.spiders']
NEWSPIDER_MODULE = 'production.spiders'
DEFAULT_ITEM_CLASS = 'production.items'
ROBOTSTXT_OBEY = True
IMAGES_STORE = '/Users/home/images'

DOWNLOAD_DELAY = 2

ITEM_PIPELINES = {'scrapy.pipelines.images.ImagesPipeline': 1}
# Disable cookies (enabled by default)

items.py

# -*- coding: utf-8 -*-
import scrapy

class ProductionItem(scrapy.Item):
    img_url = scrapy.Field()
# ScrapingList Residential & Yield Estate for sale
class ListResidentialItem(scrapy.Item):
    image_urls = scrapy.Field()
    images = scrapy.Field()

class ImageItem(scrapy.Item):
    image_urls = scrapy.Field()
    images = scrapy.Field()

管道.py

import scrapy
from scrapy.pipelines.images import ImagesPipeline
from scrapy.exceptions import DropItem

class MyImagesPipeline(ImagesPipeline):

    def get_media_requests(self, item, info):
        for image_url in item['image_urls']:
            yield scrapy.Request(image_url)

    def item_completed(self, results, item, info):
        image_paths = [x['path'] for ok, x in results if ok]
        if not image_paths:
            raise DropItem("Item contains no images")
        item['image_paths'] = image_paths
        return item
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scrapy图像下载 的相关文章

  • 如何将 Google Cloud Storage 中的许多文件设为私有?

    我进行了很多研究 但无法为此提出解决方案 以下是我用来在 GCP 中公开所有文件的代码 def make blob public bucket name blob name Makes a blob publicly accessible
  • 测试交互式Python程序

    我想知道python的哪些测试工具支持交互式程序的测试 例如 我有一个由以下人员启动的应用程序 python dummy program py gt gt Hi whats your name Joseph 我想要仪器Joseph所以我可以
  • 如何仅选择数组中的第一列并对其求和?

    这是我的代码 import numpy as np contrainte1 1080 0 65 minutes tous les jours contrainte2 720 0 55 minutes du lundi au vendredi
  • Visual Studio Code:如何使用参数调试 Python 脚本

    我正在使用 Visual Studio Code 来调试 Python 脚本 下列的本指南 https code visualstudio com docs python debugging 我在中设置了参数launch json file
  • 如何在python中确定过去的时区特定日期是否是夏令时?

    有没有办法检查特定时区在我指定的日期是否处于夏令时 test dt datetime year 2015 month 2 day 1 pst pytz timezone America Los Angeles test dt pst loc
  • Pandas 在列级别连接数据帧时添加键

    根据 Pandas 0 19 2 文档 我可以提供keys参数来创建结果多索引 DataFrame 一个例子 来自 pandas 文档 是 result pd concat frames keys x y z 我将如何连接数据框以便我可以在
  • 如何使用 Twython 将 oauth_callback 值传递给 oauth/request_token

    Twitter 最近刚刚强制执行以下规定 1 您必须通过oauth callbackoauth request token 的值 这不是可选的 即使您已经在 dev twitter com 上设置了一个 如果您正在执行带外 OAuth 请通
  • 为什么在 __init__ 函数中声明描述符类会破坏描述符功能?

    在下面的 B 类中 我想要 set 每当您赋值给 A 类中的函数时 就会调用该函数B a 相反 将值设置为B a覆盖B a与价值 C类分配给C a工作正常 但我想为每个用户类都有一个单独的 A 实例 即我不想在 C 的一个实例中更改 a 来
  • 多个列表和大小的所有可能排列

    在 python 中使用以下命令很容易计算简单的排列itertools permutations https docs python org 3 library itertools html itertools permutations 你
  • 在 Android 中将图像从可绘制图像转换为字节数组

    由于我要将图像发送到 Parse com 因此我必须将其转换为字节数组 我的第一种方法是从图库中选择图像并将其转换为字节数组 如下所示 Override protected void onActivityResult int request
  • Python 可选参数对

    我正在使用argparse模块获取两个可选的命令行参数 parser add argument start date nargs metavar START DATE help start date in YYYY MM DD parser
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • TypeError:“NoneType”对象不可下标[重复]

    这个问题在这里已经有答案了 错误 names curfetchone 0 TypeError NoneType object is not subscriptable 我尝试检查缩进 但仍然有错误 我读到 如果数据库中没有文件名记录 变量名
  • 使用 os.forkpty() 创建一个伪终端以 ssh 到远程服务器并与其通信

    我正在尝试编写一个 python 脚本 它可以 ssh 到远程服务器 并可以从 python 客户端执行 ls cd 等简单命令 但是 在成功 ssh 到服务器后 我无法读取伪终端的输出 任何人都可以在这里帮助我 以便我可以在服务器上执行一
  • 在 matplotlib 中将 3D 背景更改为黑色

    我在将 3D 图表的背景更改为黑色时遇到问题 这是我当前的代码 当我将facecolor设置为黑色时 它会将图表内部更改为灰色 这不是我想要的 fig plt figure fig set size inches 10 10 ax plt
  • 向结构化 numpy 数组添加字段

    将字段添加到结构化 numpy 数组的最简洁方法是什么 是否可以破坏性地完成 或者是否有必要创建一个新数组并复制现有字段 每个字段的内容是否连续存储在内存中 以便可以有效地完成此类复制 如果您使用 numpy 1 3 还有 numpy li
  • 给定一个字符串,如何删除所有重复的连续字母?

    如何从字符串中删除两个连续的字母 例如 a str hii thherre 应该成为 hi there 我尝试这样做 a str join sorted set a str key a str index 但是 我得到 hi ter 是的
  • 具有行业级约束的 SciPy 投资组合优化

    尝试在这里优化投资组合权重分配 通过限制风险来最大化我的回报函数 我可以毫无问题地通过简单的约束 所有权重之和等于 1 找到产生我的回报函数的优化权重 并做出另一个约束 即我的总风险低于目标风险 我的问题是 如何为每个组添加行业权重界限 我
  • 带预览和进度栏的 Twitter Bootstrap 图像上传

    我如何使用 Twitter Bootstrap 上传带有预览和进度条的单个图像 目前 在保存图像之前 我看不到上传图像的任何预览或进度条 Jasny 的 Bootstrap 分支让您能够接近这一点 看文档 http jasny github
  • Pandas 2 个字段中唯一值的数量

    我正在尝试查找覆盖 2 个字段的唯一值的数量 例如 一个典型的例子是姓氏和名字 我有一个数据框 当我执行以下操作时 我只获取每列的唯一字段数 在本例中为 最后一个 和 第一个 不是复合体 df Last Name First Name nu

随机推荐

  • 从字符串中过滤字符[重复]

    这个问题在这里已经有答案了 我需要创建一个函数 它接受两个字符串作为输入 并返回 str 1 的副本 其中删除了 str2 中的所有字符 第一件事是用 for 循环迭代 str1 然后与 str2 进行比较 为了完成减法 我应该创建一个第三
  • 保存之前和加载之后的数据框状态 - 有什么不同?

    我有一个包含一些 SQL 表达式 合并 case when 等 的 DF 我后来尝试映射 平面映射这个 DF 在那里我得到了Task not serializable由于字段包含 SQL 表达式而导致错误 为什么我需要 map flatMa
  • 有效识别差异

    每天 我们都会收到来自不同供应商的不同格式 CSV XML 自定义 的巨大文件 我们需要将这些文件上传到数据库中以进行进一步处理 问题是这些供应商将发送其数据的完整转储 而不仅仅是更新 我们有一些应用程序 我们只需要发送更新 即仅发送更改的
  • Swift 中 java 的 instanceof 相当于什么?

    就像java的instanceOf关键字一样 Swift中的等价物是什么 java的例子 A a new A boolean isInstanceOfA a instanceof A 这里 isInstanceOfA 为 true 所以我需
  • Httpd.conf 多个 VirtualHost 部分(是:Mono ASP.NET MVC AutoHosting 问题)

    我正在做的正是this https stackoverflow com questions 699487 mono 2 4 autohosting and mvc 703196 703196尝试禁用自动托管 但是现在我收到 多次尝试生成进程
  • Java DatagramSocket 监听广播地址

    我编写了一个简单的测试类 旨在监听 Eth 并接收所有UDP数据包 发送至端口5001 public class Main public static void main String args throws SocketException
  • 如何解决 IIS7.0 上的“HTTP 错误 500.19 - 内部服务器错误”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是什么原因导致此错误 我该如何修复它 详细错误信息模块 IIS Web 核心通知开始请求处理者尚未确定错误代码0x8007052e配置错误
  • 如何在 DataReader 上实现 Peek() 函数?

    似乎没有一个Peekado net 中 DataReader 上的方法 我希望能够在循环阅读器之前执行一些一次性处理 并且如果能够查看第一行中的数据而不导致后续迭代跳过它 那就太好了 实现这一目标的最佳方法是什么 我正在使用一个SqlDat
  • 在网站之间安全地传输用户

    这是场景 您有两个存在于不同环境中的独立网站 即不同的数据库 不同的 Web 服务器 域 您可以完全控制两个站点的代码 但从上面的观点来看 它们不能直接与对方的数据库进行通信 您必须将用户从站点 A 安全地转移到站点 B 实现这一点的最佳方
  • 如何使文本在 HTML 页面中垂直和水平居中

    我对Java C 数据库 网络等有一些经验 但是与Html相关的任何东西我都是初学者 我唯一想要的就是在页面中间居中两个单词 这个页面只会有这两个词 WORD1 WORDWORDWORDWORD2 我尝试过一些所见即所得的软件 比如 Kom
  • Rails UJS“开启”处理ajax事件

    我在 Rails 应用程序中使用 jQuery 方法 on 来将事件附加到并不总是存在的表单上 当 myForm 附加到文档时 它似乎没有附加事件处理程序 这是UJS的建议用法on myForm on ajax complete funct
  • 在 Swift 中调用 CGPatternCreate

    我想知道如何将以下 Objective C 方法转换为 Swift 函数 CGPatternRef pattern CGPatternCreate NULL rect CGAffineTransformIdentity 24 24 kCGP
  • Java Swing UI 测试驱动程序替换 Fest [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有 Fest 的替代品 以便替代品可以以黑盒方式 不是 JUnit 驱动 Java Swing UI
  • 计算文件夹大小

    我正在尝试并行计算文件夹大小 也许这是一种天真的做法 我所做的是将每个分支节点 目录 的计算交给代理 所有叶节点的文件大小都添加到 my size 中 好吧 这不起作用 扫描 工作正常 连续 pscan 仅打印第一级的文件 def agen
  • 如何全局指定 .net 5.0 应用程序不支持 android 和 ios

    我在 net 5 0 项目中使用 System IO Ports 这会生成如下警告 警告 CA1416 此调用站点可在所有平台上访问 ios android 不支持 SerialPort Close 我可以在调用 SerialPort 方法
  • 如何使用标准应用程序打开文件?

    我的应用程序将 PDF 打印到临时文件 如何使用 Python 中的默认应用程序打开该文件 我需要一个解决方案 Windows Linux 如果没有更通用的话 Ubuntu 和 Xfce Related 使用 Python 中的默认应用程序
  • 防止 mat-option 选择 if 条件

    我想阻止选择 mat option 因为单击它会打开一个对话框 仅当从对话框中选择某些内容时 才应选择我的选项 如果对话框中未选择任何内容 则不应更改 mat option 之前的值
  • Bootstrap 中延迟显示崩溃?

    如何延迟 Bootstrap 4 中折叠元素的显示 例如 您是否延迟显示下面示例中的 链接 href 按钮的内容 p a class btn btn primary href collapseExample Link with href a
  • 架构 i386 clang 的重复符号

    我在 google 和 stackoverflow 上看到了与此错误相关的几篇文章 我已经阅读了所有这些文章 但仍然在获取问题 我会很高兴找到解决方案 这是我在编译时收到的错误消息 找不到选项 L Users somefolder Docu
  • Scrapy图像下载

    我的蜘蛛运行时没有显示任何错误 但图像未存储在文件夹中 这是我的 scrapy 文件 蜘蛛 py import scrapy import re import os import urlparse from scrapy spiders i