【问题标题】:Pull the new data from website into the existing table with Scrapy使用 Scrapy 将网站中的新数据提取到现有表中
【发布时间】:2023-03-30 15:30:01
【问题描述】:

我有一个使用 Python 的 Scrapy 项目。我从网站上提取了我想要的所有数据。但我想将新数据从网站拉到现有表中,而不是在每次更新时从一开始就拉数据。例如,

+---------------------------+
| ID  |  Name   |   Job     |
+---------------------------+
| 01  |  Maria  |   Doctor  |
+---------------------------+
| 02  |  Silvia |   Teacher |
+---------------------------+
| 03  |  Lora   |   Soldier |
+---------------------------+

随着新的更新,新数据已添加到网站。这个数据是:

+-------------------------+
| ID  | Name   | Job      |
+-------------------------+
| 04  | Blanca | Engineer |
+-------------------------+

所以,当我运行我的代码时,我只想将新数据从网站拉到现有表中。不是从头再来。

我该怎么做?

【问题讨论】:

  • 这听起来像INSERT
  • 实际上不是。是的,我使用 INSERT 来提取所有数据。但是我不想每次运行代码时都从头开始提取所有数据。我只想在运行代码时将新数据拉入我的存在表中。所以, INSERT 是不够的。您对这个问题有其他看法吗? @GordonLinoff

标签: python mysql sql scrapy web-crawler


【解决方案1】:

有一种方法可以做到这一点,即使用管道并将数据与之前的数据进行映射,并在数据库中不可用时插入记录。至于scrapy,它完全依赖于选择器。如果前一个的选择器和站点上的数据相同,那么您在抓取数据时无法区分数据。该管道将​​帮助您根据需要过滤记录。

https://docs.scrapy.org/en/latest/topics/item-pipeline.html

【讨论】:

  • 感谢您的回答。我得到了它。但是我如何在 pipelines.py 中编码呢?
  • 这将对您有所帮助。 stackoverflow.com/questions/43656127/…
  • 很遗憾我没听懂。你能告诉我我会使用哪个功能吗?我的问题是:当我运行项目时,如果网站中有新数据,数据应该添加到存在表中。不是所有的数据。我只想将新数据添加到我的表中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多