问题标签 [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.
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
你知道如何处理这个问题吗?
python - 在python中使用scrapy包进行数据爬取
我正在尝试使用“scrapy”包从网站(IMDB)中获取一些带有图像的数据。
如果 div 类中有 image_URL,那么我可以使用电影海报抓取数据。但是,如果没有,我的代码将无法正常工作。它跳过了一些与图像相关的数据。
我想像没有 image_URL 一样修复它,然后忘记图像,只抓取数据。
除了部分,我该如何修复?
def 解析(自我,响应):
这是管道代码↓↓↓↓
类 ImdbPipeline(对象):
mysql - Scrapy Pipeline 不会插入 MySQL
我正在尝试使用 Scrapy 为大学项目构建一个小型应用程序。蜘蛛正在抓取项目,但我的管道没有将数据插入 mysql 数据库。为了测试管道是否不起作用或 pymysl 实现是否不起作用,我编写了一个测试脚本:
代码开始
代码结束
运行此脚本后,我的数据库有一条新记录,因此它不是我的 pymysql.connect() 函数,它已损坏。
我将提供我的scrapy代码:
vattenfall_form.py
管道.py
settings.py (我只改变了那行)
那么我的代码有什么问题?我无法弄清楚,如果有人看到我丢失的东西,我会很高兴。提前致谢!
python - Scrapy:如何在蜘蛛中使用项目以及如何将项目发送到管道?
我是新手scrapy
,我的任务很简单:
对于给定的电子商务网站:
抓取所有网站页面
寻找产品页面
如果 URL 指向产品页面
创建一个项目
处理项目以将其存储在数据库中
我创建了蜘蛛,但产品只是打印在一个简单的文件中。
我的问题是关于项目结构:如何在蜘蛛中使用项目以及如何将项目发送到管道?
我找不到使用项目和管道的项目的简单示例。
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仍然抛出一个错误......
提前谢谢了!
python - 字段上的 Scrapy 合并输出
我有一个这样的 Scrapy 输出:
这是因为在每个产品处理中我都在使用 Loader.load_item()。
如何构建管道或输出处理器以使其仅返回最后处理的项目,如下所示?
最后处理的行包含该会话中的所有产品。我尝试在蜘蛛关闭时进行处理,但没有成功。
我几乎完成了这个项目,研究了很多,尝试了很多东西,很多问题,但没有一个与字段上的项目堆叠有关。
我的商品代码:
我的蜘蛛代码:
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
请注意,我不知道最终下载的文件名使用的正确元名称是什么(我不确定它是文件名、图像名还是标题)。
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 任务的静态方式吗?因为我会喜欢那个......
python - Scrapy 和 python 响应对象没有属性'xpath'
编辑 2 - 因为我的文件夹与我选择的名称混淆了,所以我不小心发布了错误的代码。请参阅下面的每个文件的准确代码,以获取包含我所有文件的正确文件夹。
设置
管道.py
项目.py
博客点.py
这是当前日志所说的:
python - Scrapy 数据未写入数据库
蜘蛛和管道运行良好,但数据库仍然显示空集。这是管道代码。我正在使用 python 2.7 和 mysql 数据库