问题标签 [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 - 我的 Scrapy 项目['img_urls'] 没有下载文件
我目前正在从事一个学生的数据科学家项目,该项目包括通过图片构建鱼类识别系统。我们将使用 tensorflow 从数据和 scrapy 中获取意义,以找到大量数据(鱼图片和他的学名)。
我是scrapy的新手,但是自从3天以来我一直在工作,我写了一个基本的fishbase蜘蛛(你会在蜘蛛的代码中找到url):
这是项目文件:
和设置文件:
我得到了我想要的结果,但图像不会下载。我不明白为什么...另外,我从其他网站下载了大量图片。
python - 通过命令行调用scrapy的自定义导出器
在尝试解决我的问题(通过特定项目的字段输出有序 Json 数组)时,我收到了一个答案,建议我为该作业创建一个自定义导出器。
我正在创建一个,但是......我发现的所有示例都建议通过管道调用它,但这对我来说似乎有点多余(我已经在个人出口商上定义了自定义行为......我为什么要也可以使用管道进行自定义?)。
我搜索的是一种通过scrapy shell调用自定义导出器的方法。例如,要输出 json,我将使用:
是否存在某种方式来指定我的自定义导出器以类似方式写入文件?我为自定义命令找到了一个实验性功能COMMANDS_MODULE,但我不确定如何将它链接到我的自定义导出器。
scrapy - 测试或模拟 Scrapy 管道
我正在考虑测试scrapy管道,(我已经知道蜘蛛可以工作)当我想到我可以只使用目标网站页面的本地副本,而不是用我的蜘蛛在线反复点击它。但我没有看到任何暗示该选项的内容。是否有某些原因导致这不起作用,或者不是最佳实践?
python - scrapy管道无法将数据插入sqlite3
创建表时它工作正常,但根本不插入任何数据。有谁知道可能是什么问题?
这是我的管道
这是物品
这是主程序
告诉我是否缺少任何信息
python - Django 自动创建 slug 和完整性错误
我不明白这一点。我在这里看到帖子Django - Slugs - Key (slug)=() is duplicated 在这里 Django: Key (slug)=(*) already exists。
这是我的错误信息:
django.db.utils.IntegrityError:重复的键值违反了唯一约束“caseAT_case_slug_key”详细信息:键(slug)=()已经存在。
在文档中它说: https://docs.djangoproject.com/en/1.8/howto/writing-migrations/#migrations-that-add-unique-fields 应用“普通”迁移,添加一个唯一的不可为空的字段到具有现有行的表将引发错误,因为用于填充现有行的值仅生成一次,从而打破了唯一约束。
但这不是迁移。这是一个 djangoitem 管道。该模型具有从标题自动创建的 slug。因此,我没有将 slug 放入管道中。如果它期望创建 slug 并且因为它已经存在而犹豫不决,为什么它不期望创建所有其他密钥?如果它不在管道中,为什么它现在要创建它?因为它期望创造它?所以我应该删除该字段上的自动创建?那么它是如何创建的呢?我确实希望我的蛞蝓是独一无二的。
对我来说,这似乎是循环和疯狂的,但这有什么区别呢?没有任何。感谢您的帮助。
python - 如何使用 Scrapy 中的项目管道以每个蜘蛛类定义的特定顺序保留/导出字段项目
我有一个蜘蛛,它将数据导出到不同的 CSV 文件(根据蜘蛛类中定义的类定义的名称)。但是,我还希望在处理字段并将其导出到不同的 CSV 文件时保持特定顺序的字段顺序。
例如,这是我的 items.py:
这是我的 pipelines.py:
这是我的spider.py:
由于蜘蛛正在处理和导出数据,我正在寻找一种方法来保留 CSV 生成的文件“first_class_def.csv”和“second_class_def.csv”中的字段,以与 items.py 中相同的顺序导出:
f1,f2,f3
和
f1,f4,f5,f6
但是,每当我抓取蜘蛛时,CSV 文件中的字段都会以随机顺序导出:
f2,f1,f3 和 f5,f1,f4,f6
解决方法贴在下面!
python - 删除 None 值的管道
我的蜘蛛产生某些数据,但有时它找不到数据。而不是设置如下条件:
我宁愿通过删除所有None
有价值的项目在我的管道中解决这个问题。我试图通过以下代码来做到这一点:
但是,这会导致错误:
我认为这与一个字段已被提交给管道但最终没有返回的事实有关,但这只是一个猜测。
目前,该管道具有以下语句:
而且我想防止添加不必要的额外语句来检查值是否为None
.
python - Scrapy-MySQL 管道不保存数据
我正在使用scrapy抓取一个网站的外部链接,并将这些链接存储到MYSQl db。我在我的代码中使用了一个片段。当我运行蜘蛛时,我看到链接被废弃但给出错误
2018-03-07 13:33:27 [scrapy.log] 错误:字符串格式化期间并非所有参数都转换
很明显,由于点、斜线、逗号和破折号,链接没有被转换为字符串。那么我怎样才能传递链接并在没有错误的情况下存储它们。TIA
管道.py
当给出运行命令时, ITEMS.py
设置.py
python - 遍历列表时,项目随机永远不会到达管道
我对scrapy还很陌生。我正在抓取一个提供网站列表的网站。我想抓取这些网站的某些页面。
示例:siteX.com 具有以下列表:
所有这些页面都有遵循相同结构的子站点,每个站点我需要两个额外的请求来获取它们的数据:
我可以通过使用以下代码的单个条目来实现这一点:
然后将 Foo 放入管道中的数据库中。我现在的问题是,当我遍历源网站上的列表时,并非所有项目都进入管道:
不过这完全是随机的——它并不总是相同的站点,而且我在日志中看不到任何错误(“LOG_LEVEL”:“DEBUG”)。但是爬取单个站点总是有效的。这种行为的原因可能是什么?
python - 在爬虫scrapy中给出输出文件名
我有用python 3.6编写的scrapy项目。并且项目有 3 个爬虫,它只是从 3 个不同的网站上抓取项目,每个网站一个爬虫。我正在使用items.py
脚本yield item
中的项目,每个爬虫的项目都有细微的不同,我运行它scrapy crawl crawlera -o sample.json
并将sample.json
文件作为输出文件。我对每个爬虫都做同样的事情,但输出文件名不同。
但是,我想做的是,我想timestamp + website name
为每个网站提供文件名,这样每次运行和每个网站的文件名都会不同。
所有三个爬虫都具有相同的结构一个在下面
项目.py
助手.py