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

scrapy - Scrapy 连接不同的项目以提高产量

我废弃新闻网站。每条新闻都有内容,也有很多评论。我有 2 个项目,一个用于内容,另一个用于多个评论。问题是内容和多个评论产生不同的请求。我希望新闻的内容和它的多个评论应该一起或作为一个产生或返回。管道时间或顺序对我来说无关紧要。

在项目文件中:

在 Spider 中,News 内容和它的许多评论没有联系:

管道:

产量时如何连接项目或嵌套?

0 投票
1 回答
209 浏览

python - Scrapy 正则表达式自定义管道

这是我的 Scrapy 自定义正则表达式管道代码:

这是我的正则表达式代码:

不是真正的编译正则表达式,仅用于演示目的。

这可行,但是一旦找到匹配项并触发“返回项目”,其余的就会被丢弃。

是否可以在 Scrapy 管道中继续迭代?

我已经在这里待了 4 天,尝试了你能想象到的每一种排列方式,但结果总是一样的。

我要么错过了显而易见的事情,要么这并不简单。

如果以这种方式不可能,任何对新路线的建议都非常感谢。

0 投票
1 回答
812 浏览

python-2.7 - 如何停止多线程或如何在 Scrapy 中一一发出请求?

我试图以格式爬取产品的数据。1) 添加购物车 2) 查看购物车 3) 删除购物车

对于单色产品,它工作得很好,但对于多色产品,Scrapy 采用多线程,因此上述过程并不适用于每个产品。

我希望scrapy请求如下:

1) 产品 A - 添加购物车 产品 A - 查看购物车 产品 A - 移除购物车

2) 产品 B - 添加购物车 产品 B - 查看购物车 产品 B - 删除购物车

3) 产品 C - 添加购物车 产品 C - 查看购物车 产品 C - 删除购物车

我也使用过(回调时的优先级),但没有运气。协助将不胜感激。提前致谢。

0 投票
2 回答
61 浏览

python - 从 Scrapy 抓取中删除“#”链接

我在一个网站上运行这个蜘蛛。它工作正常,但我遇到的一个问题是有许多以“#”作为链接的href。

如何完全跳过或删除这些 # 链接?我当前正在输出文件的链接,并使用lstrip转储“”到文件。我也试过i.replace了,但它仍然在文件中删除一个空行。

0 投票
1 回答
1359 浏览

python-3.x - 从脚本运行时,Scrapy 未调用分配的管道

我有一段代码来测试scrapy。我的目标是使用scrapy,而不必scrapy从终端调用命令,所以我可以将此代码嵌入到其他地方。

代码如下:

如您所见,代码是自包含的,我覆盖了两个设置;USER_AGENT 和 ITEM_PIPELINES。但是,当我在JsonWriterPipeline类中设置调试点时,我看到代码已执行并且从未达到调试点,因此未使用自定义管道。

如何解决这个问题?

0 投票
1 回答
375 浏览

python - 如何检查 Scrapy Image Pipeline 是否使用代理下载图像?

我已经建立了一个刮板,并想在 scrapy 中使用代理下载一些图像。不知道是不是真的是通过代理下载的。响应标头不显示 IP。此外,如果我将 IP 更改为随机 IP,它仍然会下载图像。如何确保它使用代理来下载图像?谢谢

管道.py

设置.py

0 投票
4 回答
1435 浏览

python - scrapy csvpipeline 根据蜘蛛名称或 id 导出 csv

我有两个不同的蜘蛛在运行。我正在寻找以蜘蛛名称命名的 2 个不同的 csv 文件。 来自spider1的spider1.csv数据和来自spider2的数据的spider2.csv

这是我的CsvPipeline类:

0 投票
1 回答
1111 浏览

python - Scrapy Pipeline 为每个 start_url 更新 mysql

我有一个从 MySQL 数据库读取 start_urls 并从每个页面抓取未知数量的链接的蜘蛛。我想使用 pipelines.py 使用抓取的链接更新数据库,但我不知道如何将 start_url 重新放入 SQL UPDATE 语句的管道中。

这是有效的蜘蛛代码。

这里是 pipeline.py,我想在其中使用 start_url 作为 SQL UPDATE 语句的 WHERE 条件抓取的链接来更新数据库。所以 SQL 语句中的 start_url 是我想要完成的占位符。

希望我的问题足够清楚。我过去曾成功使用 pipeline.py 将项目插入数据库。

0 投票
1 回答
601 浏览

python - Scrapy Pipeline SQL 语法错误

我有一个蜘蛛,它从 MySQL 数据库中抓取 URL,并使用这些 URL 作为 start_urls 来抓取,然后从抓取的页面中抓取任意数量的新链接。当我将管道设置为将 start_url 和新抓取的 url 都插入新数据库时,或者当我将管道设置为使用 start_url 作为 WHERE 条件使用新抓取的 URL 更新现有数据库时,我收到 SQL 语法错误。

当我只插入一个或另一个时,我没有收到错误。

这是spider.py

这是 pipeline.py,它显示了所有三个 self.cursor.execute 语句

最上面的 SQL 执行语句返回此错误:

中间的 SQL 执行语句返回此错误:

即使在新数据库中使用 INSERT 时,最后一条 SQL 执行语句也会返回与中间相同的错误。似乎添加了一个额外的单引号。当我仅将其中一项插入数据库时​​,最后一项有效。

对不起,很长的帖子。试图彻底。

0 投票
1 回答
190 浏览

python - Scrapy Pipeline 未知数量的结果

我有一个从 MySQL 数据库中获取 start_urls 的爬虫蜘蛛。当它抓取每个页面时,它会返回未知数量的链接,这意味着它可以从它抓取的每个页面中获得零个链接或多达 10 个链接。因为这个数字是未知的,所以我不知道如何最好地让管道使用所有可能的抓取链接更新数据库,所以我让它转储 start_url 和抓取链接到新数据库。但是,如果我使用的是新数据库,我想将每个 start_url 的 searchterm 列值带入新数据库。

如果我可以获取每个 start_url 的 searchterm 列,我可以将其输入新数据库,或者如果有人对如何使用未知数量的抓取链接更新原始数据库有不同的想法,那也可以工作。

这是spider.py。我已经注释掉了有问题的行