Scrapy:如何在蜘蛛中使用项目以及如何将项目发送到管道?

2024-03-28

我是新来的scrapy我的任务很简单:

对于给定的电子商务网站:

  • 抓取所有网站页面

  • 寻找产品页面

  • 如果 URL 指向产品页面

  • 创建一个项目

  • 处理项目以将其存储在数据库中

我创建了蜘蛛,但产品只是打印在一个简单的文件中。

我的问题是关于项目结构:如何在蜘蛛中使用项目以及如何将项目发送到管道?

我找不到使用项目和管道的项目的简单示例。


  • 如何使用我的蜘蛛中的物品?

好吧,items 的主要目的是存储你爬取的数据。scrapy.Items基本上都是字典。要声明您的项目,您必须创建一个类并添加scrapy.Field in it:

import scrapy

class Product(scrapy.Item):
    url = scrapy.Field()
    title = scrapy.Field()

您现在可以通过导入您的产品在蜘蛛中使用它。

有关高级信息,我让您查看文档here https://doc.scrapy.org/en/latest/topics/items.html?#module-scrapy.item

  • 如何将物品发送到管道?

首先,你需要告诉你的蜘蛛使用你的custom pipeline.

In the 设置.py file:

ITEM_PIPELINES = {
    'myproject.pipelines.CustomPipeline': 300,
}

您现在可以编写管道并使用您的项目。

In the 管道.py file:

from scrapy.exceptions import DropItem

class CustomPipeline(object):
    def __init__(self):
        # Create your database connection

    def process_item(self, item, spider):
        # Here you can index your item
        return item

最后,在你的spider, 你需要yield您的物品一旦装满。

蜘蛛.py例子:

import scrapy
from myspider.items import Product

class MySpider(scrapy.Spider):
    name = "test"
    start_urls = ['http://www.exemple.com']

    def parse(self, response):
        doc = Product()
        doc['url'] = response.url
        doc['title'] = response.xpath('//div/p/text()')
        yield doc # Will go to your pipeline

希望这有帮助,这是文档管道: 项目管道 https://doc.scrapy.org/en/latest/topics/item-pipeline.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scrapy:如何在蜘蛛中使用项目以及如何将项目发送到管道? 的相关文章

  • 计时器显示负的已用时间

    我正在使用一个非常简单的代码来计算每个循环的时间for陈述 它看起来像这样 import time for item in list of files Start timing this loop start time clock Do a
  • 在 Chaquopy 中转换数组和张量

    我该怎么做呢 我看到你的帖子说你可以将 java 对象传递给 Python 方法 但这不适用于 numpy 数组和 TensorFlow 张量 以下以及其各种变体是我尝试过的 但没有成功 double anchors new double
  • 嵌套重组 - Django

    我有一个包含以下字段的模型 日期 员工 和 计划时间 每个员工对于不同的日期都有不同的计划工作时间 我正在尝试构建我的模板 其中员工按行列出 他们的计划工作时间列在正确的相应日期下的列中 像这样的东西 https i stack imgur
  • Pandas 过滤 - 非索引列上的 Between_time

    我需要过滤掉特定时间的数据 DataFrame 函数 Between time 似乎是执行此操作的正确方法 但是 它仅适用于数据帧的索引列 但我需要原始格式的数据 例如 数据透视表期望日期时间列具有正确的名称 而不是索引 这意味着每个过滤器
  • 提高 pytesseract 从图像中正确识别文本的能力

    我正在尝试使用读取验证码pytesseract模块 大多数时候它都能提供准确的文本 但并非总是如此 这是读取图像 操作图像以及从图像中提取文本的代码 import cv2 import numpy as np import pytesser
  • 使用 theano 进行多处理

    我正在尝试将 theano 与 cpu 多处理和神经网络库 Keras 结合使用 I use device gpu标记并加载 keras 模型 然后 为了提取超过一百万张图像的特征 我使用多处理池 该函数看起来像这样 from keras
  • 解析器生成

    我正在做一个项目软件抄袭检测 我打算用C语言来做这件事 因为我应该创建一个令牌生成器和一个解析器 但我不知道从哪里开始 任何人都可以帮助我解决这个问题 我创建了一个令牌数据库 并将令牌与我的程序分开 接下来我想做的就是比较两个程序以查明它是
  • 如何从字典列表中查找键的值?

    如何从字典列表中获取给定键的值 mylist powerpoint color blue client name Sport Parents Regrouped sort order ascending chart layout 1 cha
  • 将这个使用 lambda 解包的元组从 Python 2 移植到 Python 3 的最 Pythonic 方法

    我有以下 Python 2 代码 它在 lambda 中解压元组 该 lambda 包含在 for 循环内 for lab lab pred length in zip labels labels pred sequence lengths
  • Seaborn 条形图条之间没有空格

    我使用下面的代码创建了一个 Seaborn 条形图 它来自https www machinelearningplus com plots top 50 matplotlib visualizations the master plots p
  • UTF-8 在 Python 日志记录中,如何?

    我正在尝试使用 Python 的日志记录包将 UTF 8 编码的字符串记录到文件中 作为一个玩具示例 import logging def logging test handler logging FileHandler home ted
  • 如何检查两个数据集的匹配列之间的相关性?

    如果我们有数据集 import pandas as pd a pd DataFrame A 34 12 78 84 26 B 54 87 35 25 82 C 56 78 0 14 13 D 0 23 72 56 14 E 78 12 31
  • 无法运行bjam编译boost python教程

    我正在尝试跟随本教程 http www boost org doc libs 1 55 0 libs python doc tutorial doc html python hello html关于为 Windows 的 python 包装
  • 如何将多索引数据帧与单个索引数据帧连接?

    df1 的单个索引与 df2 的多索引的子级别匹配 两者都有相同的列 我想将 df1 的所有行和列复制到 df2 它类似于这个线程 将单索引 DataFrame 复制到多索引 DataFrame https stackoverflow co
  • Django ConnectionAbortedError:[WinError 10053]已建立的连接被主机中的软件中止

    我将 django 与 postgresql 一起使用 每当我尝试保存或删除任何内容时 都会发生此错误 Traceback most recent call last File c program files x86 python35 32
  • 使用 PyQt5 拖放 QLabels

    我正在尝试使用 PyQt5 将 Qlabel 拖放到另一个 Qlabel 上 from PyQt5 QtWidgets import QApplication QWidget QToolTip QPushButton QMessageBox
  • 按工作日分组的熊猫 (M/T/W/T/F/S/S)

    我有一个 pandas 数据框 其中包含 YYYY MM DD arrival date 形式的时间序列 作为索引 我想按每个工作日 周一到周日 进行分组 以便计算其他日期列是平均值 中位数 标准差等 我最终应该只有七行 到目前为止我只知道
  • 如何自动检索AJAX调用的URL?

    目的是对爬行蜘蛛进行编程 使其能够 1 检索此页面表格中链接的 URL http cordis europa eu fp7 security projects en html http cordis europa eu fp7 securi
  • 多行 x 刻度标签

    我正在尝试制作类似于此 Excel 示例的图 我想知道 x 刻度标签上是否有第二层 例如 5 年统计摘要 我知道我可以使用制作多行刻度标签 n但我希望能够独立地转换这两个级别 这很接近 fig plt figure figsize 8 4
  • 在Python中:检查文件修改时间是否早于特定日期时间

    我用 C 编写了以下代码来检查文件是否已过期 DateTime lastTimeModified file getLastTimeModified if lastTimeModified HasValue File does not exi

随机推荐

  • 验证/提交错误:应用程序未通过协同设计验证

    我有许多几乎相同的应用程序 除了一些常量 图像和 sqllite 数据库文件 我之前提交它们时从未遇到过任何问题 但是今天其中一个更新在验证 提交时出现以下错误 注意 我过去已经更新过此应用程序 没有任何问题 应用程序未通过协同设计验证 签
  • 使用 LINQ 连接两个不同类型的列表

    是否可以连接两个不同类型的列表 string left A B C int right 1 2 3 var result left Concat right 上面的代码显然有一个类型错误 如果类型匹配 例如都是整数或字符串 它就可以工作 p
  • 如何在Linux中从动态库(libsample.so)生成导入库(libsample.a)

    在Linux上创建动态库后我想生成一个导入库 a 来自动态库 所以 我该怎么做 实际上 linux中的动态库不需要 导入库 导入库 是Windows中的想法 当你构建一个dll时 vs也会给你一个lib文件作为 导入库 或者你必须通过一些
  • 如何从 ResultSet 填充 JTable?

    I call getnPrintAllData 按确定按钮后的方法 public class DatabaseSQLiteConnection Connection conn null PreparedStatement statement
  • BeautifulSoup 在按复合类名搜索时返回空列表

    使用正则表达式按复合类名搜索时 BeautifulSoup 返回空列表 Example import re from bs4 import BeautifulSoup bs a class name single name692 href
  • 编写 Prolog 谓词的最佳实践是什么,以便它以指定参数的不同方式工作

    我正在尝试实现一些简单的谓词 例如 my length 或 my append 如果我们事先知道我们想要找到列表的长度 或者我们想要附加两个列表 这对我来说很容易 即我知道什么是输入 什么是输出 在 Prolog 中 可以用其他方式做事 如
  • Selenium findElements() 多次返回第一个元素的同一实例

    我需要获取所有文章标题的列表 但由于某种原因 Selenium 返回了文章 WebElement 的同一实例 3 次 网页 HTML 如下所示 div class site content clearfix div class contai
  • 如何使用 uibinder 创建带有子级的 gwt 复合组件?

    我想创建一个组件来装饰它的子组件 例如 mycomponent ui xml
  • formData.has() 不是一个函数[重复]

    这个问题在这里已经有答案了 我正在尝试执行简单的 ajax 文件上传 但收到 未捕获的类型错误 formData has 不是函数 如果我还注释掉 formData has 检查函数并将其替换为 formData append myResu
  • MS Azure Web 角色 - 如何指定 Webroot 驱动器存储大小

    我正在开发一个非常大且复杂的企业 Web 应用程序 托管在 azure 中 注意到 Web 根目录位于 E 盘 我还注意到 C 驱动器的大小为 490GB 但有趣的是 E盘上的Web根目录大小只有1GB 有什么方法可以指定您要安装的驱动器
  • 如何保护此代码免遭 SQL 注入?有点困惑

    我已经阅读了各种来源 但我不确定如何将它们实现到我的代码中 我想知道是否有人可以帮我快速完成它 一旦我在代码中被展示如何做到这一点 我想我就能学会它 这是来自我在网上找到的 AJAX 自动完成 尽管我看到它由于 queryString 或其
  • 使用php将图像保存到服务器

    嘿 我有以下脚本 基本上是一个闪存文件向它发送一些数据 它创建一个图像 然后为用户打开一个另存为对话框 以便他们可以将图像保存到系统中 问题来了 如何我还要将图像保存到我的服务器吗
  • Laravel - 多对多多态关系

    我正在努力反对 Laravel 5 7 中的多态关系定义 数据情况如下 我有一个用户模型 一个产品模型和一个销售模型 我基本上想为我的用户构建一个愿望清单 它可以包含商品和产品 并且我希望在那里有一个多态关系 因为我将不得不添加新类型的东西
  • AWS S3 中有乐观锁吗?

    我在 s3 中有一个 excel 文件 由于不同的程序读取和写入它 我需要保证每个程序都写入它们读取的版本 S3仅保证新创建对象的读后一致性 以及覆盖和删除对象的最终一致性 如果您的 Excel 文件足够小 小于 400kb 您可以将其存储
  • TYPO3 表单多复选框部分

    我尝试编辑核心文件 form Resources Private Frontend Partials Field Field html 以更改前端中的 html 输出 如果我更改该文件 它不会产生任何影响 如果我更改核心文件 form Re
  • 同时显示两个片段

    From FragmentPagerAdapter in case 0我实例化了fragment A我想显示的这个片段显示里面的两个片段frag A 视图未显示 我的 FragmentPagerAdapter 由主类调用来填充 viewpa
  • 如何使用 VS 2008 和 IE 完全禁用 JavaScript 错误

    我试图防止 VS 因 JS 错误而中断 我有以下设置 在 IE 下 Tools gt Internet Settings gt Advanced tab gt Browsing Disable script debugging Intern
  • Jquery Ajax CORS + HttpOnly Cookie

    我已经在我当前的项目中使用了 CORS 尽管我似乎无法正常工作的一件事是 cookie 现在我得到了 cookie 服务器发出它并将其发送下来 firefox 接受它 我可以在 firebug cookies 部分看到它 然而 当我对该服务
  • 如何使用 Swashbuckle.AspNetCore 将自定义泛型类型公开为 Swagger 架构中的字符串

    我有一个自定义泛型类型 大致如下所示 public struct Foo
  • Scrapy:如何在蜘蛛中使用项目以及如何将项目发送到管道?

    我是新来的scrapy我的任务很简单 对于给定的电子商务网站 抓取所有网站页面 寻找产品页面 如果 URL 指向产品页面 创建一个项目 处理项目以将其存储在数据库中 我创建了蜘蛛 但产品只是打印在一个简单的文件中 我的问题是关于项目结构 如