如何删除 Scrapy Spider 数据中的空白

2024-02-20

我正在用 Scrapy 编写我的第一个蜘蛛并尝试遵循文档。我已经实现了 ItemLoaders。蜘蛛提取数据,但数据包含许多行返回。我尝试了很多方法来删除它们,但似乎没有任何效果。 Replace_escape_chars 实用程序应该可以工作,但我不知道如何将它与ItemLoader。也有人使用(unicode.strip),但同样,我似乎无法让它工作。有些人尝试在 items.py 中使用它们,而另一些人则尝试在蜘蛛中使用它们。如何清除这些行返回(\r\n)的数据?我的 items.py 文件仅包含项目名称和 field()。蜘蛛代码如下:

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.loader import XPathItemLoader
from scrapy.utils.markup import replace_escape_chars
from ccpstore.items import Greenhouse

class GreenhouseSpider(BaseSpider):
    name = "greenhouse"
    allowed_domains = ["domain.com"]
    start_urls = [
        "http://www.domain.com",
    ]

    def parse(self, response):
        items = []
        l = XPathItemLoader(item=Greenhouse(), response=response)
        l.add_xpath('name', '//div[@class="product_name"]')
        l.add_xpath('title', '//h1')
        l.add_xpath('usage', '//li[@id="ctl18_ctl00_rptProductAttributes_ctl00_liItem"]')
        l.add_xpath('repeat', '//li[@id="ctl18_ctl00_rptProductAttributes_ctl02_liItem"]')
        l.add_xpath('direction', '//li[@id="ctl18_ctl00_rptProductAttributes_ctl03_liItem"]')
        items.append(l.load_item())

        return items

您可以使用default_output_processor在装载机以及各个领域的其他处理器上,请参阅title:

from scrapy.spider import BaseSpider
from scrapy.contrib.loader import XPathItemLoader
from scrapy.contrib.loader.processor import Compose, MapCompose
from w3lib.html import replace_escape_chars, remove_tags
from ccpstore.items import Greenhouse

class GreenhouseSpider(BaseSpider):
    name = "greenhouse"
    allowed_domains = ["domain.com"]
    start_urls = ["http://www.domain.com"]

    def parse(self, response):
        l = XPathItemLoader(Greenhouse(), response=response)
        l.default_output_processor = MapCompose(lambda v: v.strip(), replace_escape_chars)
        l.add_xpath('name', '//div[@class="product_name"]')
        l.add_xpath('title', '//h1', Compose(remove_tags))
        l.add_xpath('usage', '//li[@id="ctl18_ctl00_rptProductAttributes_ctl00_liItem"]')
        l.add_xpath('repeat', '//li[@id="ctl18_ctl00_rptProductAttributes_ctl02_liItem"]')
        l.add_xpath('direction', '//li[@id="ctl18_ctl00_rptProductAttributes_ctl03_liItem"]')

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

如何删除 Scrapy Spider 数据中的空白 的相关文章

随机推荐

  • 使用图权重提升深度优先访问者最小生成树

    我想从具有边权重的顶点创建最小生成树 并以深度优先顺序遍历图 我可以构建图表和最小生成树 但我无法编写自定义访问者 include
  • WinHttpSendRequest 失败并显示 ERROR_WINHTTP_SECURE_FAILURE

    以编程方式与网络进行通信不是我的专业领域 但我设法通过从网上找到的示例中剪切和粘贴代码来创建 read web page 函数 并且该代码已经连续好几个月每天正常运行 碰巧的是 我工作时的主 Windows 10 电脑坏了 在等待维修时 我
  • PHP - 读取和修复大型无效 XML 文件

    我必须读取一些相当重的 XML 文件 200 MB 到 1 GB 之间 其中一些文件是无效的 让我举一个小例子
  • 为什么最终没有被调用?

    我有几个关于java中的垃圾收集器的问题 Q1 据我了解 当对象超出范围并且 JVM 即将收集垃圾时 finalize 就会被调用 我认为 Finalize 方法是由垃圾收集器自动调用的 但在这种情况下它似乎不起作用 解释是什么 为什么需要
  • ObjC Plist 文件读取比 JSON 快?

    我做过这个测试项目https github com danielpetroianu FileDeserializeBenchmarking https github com danielpetroianu FileDeserializeBe
  • jQuery 错误? .appendTo() 在 IE7 中不起作用

    我正在尝试为 jQuery 创建一个选项传输插件 我可以在 Opera Firefox Chrome 和 Safari 中使用基本功能 但 IE7 无法配合 IE7 中的传递函数的运行似乎非常零散且难以理解 我创造了一个示例页面来说明我的问
  • Three.JS - 粒子沿随机方向绕点运行形成球体

    我有一个粒子系统 其中所有粒子都位于相同的坐标处 并且在随机方向上一个接一个地 它们 应该 开始绕场景中心运行 形成一个球体 到目前为止 我成功实现的是一组 Vector3 对象 粒子 它们一个接一个地开始沿着 Z 轴绕中心运行 只需根据当
  • 将 bigint 转换为日期时间

    我想将一个值从 bigint 转换为 datetime 例如 我正在阅读HISTORY表的团队城市服务器 在场上构建启动时间服务器 我在一条记录 1283174502729 上有这个值 如何将其转换为日期时间值 这对你有用吗 它在 SQL
  • xsl string-join() 多个变量 - 仅使用非空

    我想创建几个 xsl variable 它们可能为空 也可能不为空 然后加入它们
  • BigQuery 中有自动增量吗?

    BigQuery 中是否有 AUTO INCRMENT SERIAL IDENTITY 或序列之类的内容 我知道 ROW NUMBERhttps cloud google com bigquery query reference row n
  • 如何快速检查是否使用 Perl 安装了 Linux `unzip`?

    如何快速检查是否是Linuxunzip是使用 Perl 安装的吗 which unzip 如果有输出 则它指向解压缩的位置 如果没有输出 则不会显示任何内容 这依赖于解压缩在您的路径上
  • UISegmentedControl setSelectedSegmentIndex:没有 valueChanged 操作

    我正在通过代码设置 UISegmentedControl 的 selectedSegmentIndex 每当我这样做时 就会调用 valueChanged 操作 这对我来说听起来很合乎逻辑 但是有没有办法在不调用操作的情况下设置选定的段 它
  • Powershell 更新失败

    当我跑步时Update Help它在 Powershell 中失败 我不通过代理 这是直接访问 我还以管理员身份运行 Powershell 我不知道还要检查什么 欢迎任何建议 这是我的版本 PSVersionTable Name Value
  • 如何确定 Windows/IIS 上的文件编码?

    从答案到这个问题 https stackoverflow com questions 2453647 why are accented characters rendering inconsistently when accessing t
  • 我如何显示提交做了什么?

    我知道的一个愚蠢的方法是 git diff commit number1 commit number2 有没有更好的办法 我的意思是 我想知道 commit1 本身 我不想在它之前添加 commit2 作为参数 git show
  • 将 WPF 控件设置为扩展以填充可用空间,仅此而已

    如何设置 WPF 控件来填充其父级容器中的可用空间 但不展开父级 以下代码片段描述了我正在尝试的布局 我想要Grid伸展以适应Expander 我想要ListBox只为了填补Grid 我想要ListBox的滚动条出现时Grid太小 无法显示
  • 如何在 Airflow 2.x 中将 XComArg 转换为字符串值?

    Code from airflow models import BaseOperator from airflow utils decorators import apply defaults from airflow providers
  • 逻辑:tr_rev_ Correct 的辅助引理

    在逻辑章节中 介绍了反向列表函数的尾递归版本 我们需要证明它可以正确工作 Fixpoint rev append X l1 l2 list X list X match l1 with gt l2 x l1 gt rev append l1
  • .NET Compact Framework 3.5 上是否提供像 AutoMapper 这样的映射库?

    是否有人在研究 AutoMapper 的 NET Compact Framework 端口 或者是否有任何类似的 NET Compact Framework 映射库 你可以建立在奥姆地图绘制器 https stackoverflow com
  • 如何删除 Scrapy Spider 数据中的空白

    我正在用 Scrapy 编写我的第一个蜘蛛并尝试遵循文档 我已经实现了 ItemLoaders 蜘蛛提取数据 但数据包含许多行返回 我尝试了很多方法来删除它们 但似乎没有任何效果 Replace escape chars 实用程序应该可以工