问题标签 [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 回答
479 浏览

python-3.x - python scrapy管道突然不起作用

这很奇怪,我用它的管道编写了scrapy代码并爬取了大量数据,它总是运行良好。今天,当我重新运行相同的代码时,它突然根本不起作用。以下是详细信息:

我的蜘蛛 - base_url_spider.py

如果我只运行我的蜘蛛代码,通过命令行scrapy runspider --logfile ../logs/log.txt ScrapeNews/spiders/article_base_url_spider.py。它可以抓取start_urls.

我的管道 - base_url_pipelines.py

我的设置 - settings.py 我没有注释这些行:

我的scrapy.cfg 这个文件应该用来指明设置文件在哪里

所有这些东西过去都很好地协同工作。

但是,今天当我重新运行代码时,我得到了这种类型的日志输出:

对比上面的异常日志输出,如果我只在这里运行我的spider,日志是没问题的,显示如下:

在上面的异常日志输出中,我注意到了类似机器人的东西:

GET http://www.theglobeandmail.com/robots.txt从未出现在整个正常的日志输出中。但是当我在浏览器中输入这个时,我不太明白它是什么。所以我不确定是否是因为我正在抓取的网站添加了一些机器人?

还是问题来自收到的 SIG_UNBLOCK,正常关闭?但我没有找到任何解决方案。

我用来运行代码的命令行是scrapy runspider --logfile ../../Logs/log.txt base_url_spider.py

你知道如何处理这个问题吗?

0 投票
1 回答
75 浏览

python - 在python中使用scrapy包进行数据爬取

  1. 我正在尝试使用“scrapy”包从网站(IMDB)中获取一些带有图像的数据。

  2. 如果 div 类中有 image_URL,那么我可以使用电影海报抓取数据。但是,如果没有,我的代码将无法正常工作。它跳过了一些与图像相关的数据。

  3. 我想像没有 image_URL 一样修复它,然后忘记图像,只抓取数据。

  4. 除了部分,我该如何修复?

def 解析(自我,响应):

这是管道代码↓↓↓↓

类 ImdbPipeline(对象):

0 投票
3 回答
2274 浏览

mysql - Scrapy Pipeline 不会插入 MySQL

我正在尝试使用 Scrapy 为大学项目构建一个小型应用程序。蜘蛛正在抓取项目,但我的管道没有将数据插入 mysql 数据库。为了测试管道是否不起作用或 pymysl 实现是否不起作用,我编写了一个测试脚本:

代码开始

代码结束

运行此脚本后,我的数据库有一条新记录,因此它不是我的 pymysql.connect() 函数,它已损坏。

我将提供我的scrapy代码:

vattenfall_form.py

管道.py

settings.py (我只改变了那行)

那么我的代码有什么问题?我无法弄清楚,如果有人看到我丢失的东西,我会很高兴。提前致谢!

0 投票
1 回答
21266 浏览

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

我是新手scrapy,我的任务很简单:

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

  • 抓取所有网站页面

  • 寻找产品页面

  • 如果 URL 指向产品页面

  • 创建一个项目

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

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

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

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

0 投票
1 回答
1224 浏览

python - 用于分离文件夹/文件的 Scrapy 管道 - 抽象

我目前正在完成一个 Scrapy 项目,但是我有一个很长的pipelines.py文件。

我注意到在我settings.py的管道中显示如下(修剪):

我尝试了以下方法来纠正这个问题。

1.) 我创建了一个新文件/文件夹,并尝试以相同的方式从管道中引用它。

文件夹myPipelines/Test.py具有类名TestPipeline,然后在管道设置中引用为proj.myPipelines.Test.TestPipeline': 100,.

这给我带来了错误。

然后我想我可以导出模块并导入到我的当前模块中pipelines.py,它会从中获取参考。__init__.py我在我的目录中添加了一个空myPipelines然后添加from myPipelines.Test import TestPipeline但scrapy仍然抛出一个错误......

提前谢谢了!

0 投票
1 回答
355 浏览

python - 字段上的 Scrapy 合并输出

我有一个这样的 Scrapy 输出:

这是因为在每个产品处理中我都在使用 Loader.load_item()。

如何构建管道或输出处理器以使其仅返回最后处理的项目,如下所示?

最后处理的行包含该会话中的所有产品。我尝试在蜘蛛关闭时进行处理,但没有成功。

我几乎完成了这个项目,研究了很多,尝试了很多东西,很多问题,但没有一个与字段上的项目堆叠有关。

我的商品代码:

我的蜘蛛代码:

0 投票
1 回答
2048 浏览

python - Python + Scrapy 重命名下载的图像

重要提示:目前在 stackoverflow 上的所有答案都适用于以前版本的 Scrapy,不适用于最新版本的 scrapy 1.4

对scrapy和python完全陌生,我正在尝试抓取一些页面并下载图像。正在下载图像,但它们仍然具有原始 SHA-1 名称作为文件名。我不知道如何重命名文件,它们实际上都有 SHA-1 文件名

试图将它们重命名为“test”,当我运行时,我确实在输出中出现了“test” scrapy crawl rambopics,以及 url 的数据。但文件不会在目标文件夹中重命名。以下是输出示例:

到目前为止,我已经尝试了许多不同的解决方案,都发布在 stackoverflow 上,对于 2017 年最新版本的 scrapy,这个问题没有明确的答案,看起来这些命题可能几乎都已经过时了。我将 Scrapy 1.4 与 python 3.6 一起使用。

scrapy.cfg

items.py 导入scrapy

设置.py

管道.py

(蜘蛛)rambopics.py

请注意,我不知道最终下载的文件名使用的正确元名称是什么(我不确定它是文件名、图像名还是标题)。

0 投票
2 回答
1033 浏览

python - Scrapy 和 celery `update_state`

我有以下设置(Docker):

  • Celery 链接到运行 Scrapy 蜘蛛的 Flask 设置
  • 烧瓶设置(显然)
  • Flask setup 获取对 Scrapy 的请求 -> 启动 worker 来做一些工作

现在我想更新 celery worker 进度的原始烧瓶设置。但是现在没有办法celery.update_state()在刮板内部使用,因为它无法访问原始任务(尽管它正在 celery 任务内部运行)。

顺便说一句:我是否缺少有关scrapy结构的信息?我可以在内部分配参数__init__以便能够进一步使用似乎是合理的,但是scrapy似乎将该方法用作lambda函数。


回答一些问题:

  • How are you using celery with scrapy?Scrapy 在 celery 任务中运行,而不是从命令行运行。我也没听说过scrapyd,这是scrapy的子项目吗?我使用远程工作人员从 celery/flask 实例内部触发 scrapy,因此它与原始请求所实例化的线程不同,它们是单独的 docker 实例。

作品task.update_state很棒!在 celery 任务中,但是一旦我们“进入”蜘蛛,我们就不再可以访问 celery。有任何想法吗?

从 item_scraped 信号发出 Task.update_state(taskid,meta={})。如果scrapy碰巧在Celery任务本身中运行(因为它默认为self),您也可以在没有taskid的情况下运行

这有点像访问当前 celery 任务的静态方式吗?因为我会喜欢那个......

0 投票
2 回答
1001 浏览

python - Scrapy 和 python 响应对象没有属性'xpath'

编辑 2 - 因为我的文件夹与我选择的名称混淆了,所以我不小心发布了错误的代码。请参阅下面的每个文件的准确代码,以获取包含我所有文件的正确文件夹。

设置

管道.py

项目.py

博客点.py

这是当前日志所说的:

0 投票
0 回答
37 浏览

python - Scrapy 数据未写入数据库

蜘蛛和管道运行良好,但数据库仍然显示空集。这是管道代码。我正在使用 python 2.7 和 mysql 数据库