问题标签 [scrapy-pipeline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
120 浏览

python - scrapy mysql 返回空结果

所以我的问题是被抓取的信息不会出现在数据库中。

我的蜘蛛可以很好地打印出信息,例如在 .json 文件中。

管道.py

在settings.py中我添加了

我的日志显示了这个错误,但你仍然可以看到信息收集工作,即使它显示了这个。

所以没有结果被导入数据库

0 投票
0 回答
188 浏览

scrapy - Scrapy:如何在不下载的情况下从自定义过滤器将数据发送到管道

为了捕获所有重定向路径,包括最终 url 已经被抓取的时间,我编写了一个自定义重复过滤器:

现在,如何将 RedirectionItem 直接发送到管道?有没有办法从自定义过滤器实例化管道,以便我可以直接发送数据?或者我是否也应该创建一个自定义调度程序并从那里获取管道但是如何?

0 投票
2 回答
767 浏览

python - 使用 scrapy 作为项目生成器

我有一个需要抓取数据的现有脚本(main.py)。

我开始了一个用于检索这些数据的 scrapy 项目。现在,main.py 有什么方法可以作为 Item 生成器从 scrapy 中检索数据,而不是使用 Item 管道持久化数据?

像这样的东西真的很方便,但我不知道该怎么做,如果它完全可行的话。

我在那里找到了一个潜在的解决方案:https ://tryolabs.com/blog/2011/09/27/calling-scrapy-python-script/ ,使用多线程队列。

尽管我知道这种行为与分布式爬虫不兼容,这是 Scrapy 的用途,但我仍然有点惊讶你不会为较小的项目提供此功能。

0 投票
1 回答
3594 浏览

scrapy - 如何使用 Scrapy 下载图像?

我是scrapy的新手。我正在尝试从这里下载图像。我在关注Official-Doc这篇文章

我的 settings.py 看起来像:


看起来items.py像:

我认为这两个文件都很好。但我无法编写正确的蜘蛛来获取图像。我能够获取图像 URL,但不知道如何使用imagePipeline.
我的蜘蛛看起来像:

我在这篇文章之后写了蜘蛛。但我什么也没得到。我运行我的蜘蛛,scrapy crawl DownloadfirstImg -o img5.json 但我没有得到任何 json 或任何图像?
如果它的 url 是已知的,任何关于如何抓取图像的帮助。我也从未使用过 python,所以事情对我来说似乎很复杂。任何好的教程的链接可能会有所帮助。TIA

0 投票
3 回答
1412 浏览

python - 如何在scrapy项目导出中每次都覆盖文件?

我正在抓取一个返回列表的网站urls。例子 -scrapy crawl xyz_spider -o urls.csv

它现在工作得非常好,我想要的是让 newurls.csv不附加data到文件中。我可以做任何参数传递来使其启用吗?

0 投票
0 回答
596 浏览

python - 调试 Scrapy Item 管道

我正在尝试将抓取的项目保存到在 localhost 上运行的 MySQL 中。即使蜘蛛以预期的方式爬行站点并刮擦项目,我的持久化管道对象也不起作用 - 它不会将项目存储到数据库中。

pipelines.py 文件中的 PersistMySQL 类:

它不打印异常块,所以我的查询似乎是有效的。以下代码位于 settings.py 中(以及其他设置):

我使用了scrapy shell,发现它非常有用,但似乎没有办法从shell调试项目管道,使用会打印MySQL错误的异常也无济于事。蜘蛛程序在没有错误的情况下关闭,并且抓取了合理数量的项目,这些项目应该被持久化到数据库中。

0 投票
2 回答
574 浏览

python - 无法从 Scrapy 统计字典中获取价值

我的scrapy中有这个管道,我需要从Scrapy stats中获取信息

当我运行代码时,我得到了这个错误

如果这不是获取统计数据值的正确方法,那我该怎么办?

0 投票
0 回答
124 浏览

scrapy - 让scrapy管道等待相同或前一个管道中的另一个项目

我的问题如下:

我有 3 个项目管道

  • 一个下载档案的 FilesPipeline
  • 一个 ArchiveUnpackerPipeline 解压档案
  • 一个 SymbolicLinkerPipeline 生成指向这些档案内容的符号链接

问题如下:

由于网站的构建方式,我可能必须从不同的项目生成指向同一档案的符号链接。如果一切都以顺序方式运行,它可能如下所示:

  1. item_1开始下载archive_1
  2. item_1开始拆包archive_1
  3. item_1files_1启动from的符号链接archive_1
  4. item_2看到archive_1过去下载的,返回item_1
  5. item_2看到archive_1过去拆开包装,返回item_1
  6. item_2files_2启动from的符号链接archive_1

但是由于下载可能需要一段时间,可能会发生相同的文件被下载两次,依此类推,从而导致错误。

有没有一种优雅的方法来解决这个问题?我的第一个猜测是它可能与一个全局字典一起使用,该字典跟踪每个 download_url 的状态,状态为downloading, finished_downloading, unpacking,finished_unpacking并使用 twisted Deferred ——但因为我在不确定之前从未使用过 twisted。

0 投票
1 回答
80 浏览

python - Scrapy 仅缓存图像

我以为我找到了使用 RFC2616 策略的解决方案,但在测试刮板执行时间时,它似乎仍然说同样的话。所以我回到了默认策略。

我将我的 image_urls 指向

现在我只需要缓存我发送到项目 image_urls 的 url

现在根据我的理解,您可以通过指定覆盖策略

有什么代码建议可以让它工作吗?

0 投票
0 回答
1473 浏览

python - Flask-SQLAlchemy 检查数据库中的重复项

您好我正在使用 python scrape 库来创建蜘蛛并从网站中提取数据。在我的管道中,我使用 Flask-SQLAlchemy 来配置蜘蛛,以便它将抓取的数据添加到 SQLite 表中。我试图弄清楚如何防止蜘蛛向表中添加重复数据,因此我查询数据库以查看表是否已经包含与蜘蛛即将添加到表中的元素相同的元素。如果是这样,我不希望蜘蛛添加数据而只是移动到下一个元素。这是我到目前为止的代码:

这将返回错误 raise TypeError("Boolean value of this clause is not defined") 我假设它指的是 if duplicates: 语句,但是我不确定为什么这不起作用。我只想检查是否存在任何重复项,如果存在,则蜘蛛不应将该数据元素添加到表中。关于如何使这个系统工作的任何指示?

以下是所要求的更多堆栈跟踪: