1

我在网络上有一个 html 文件,它几乎每分钟都会更新表格中的新行。在任何时候,该文件都包含近 15000 行我想创建一个 MySQL 表,其中包含表中的所有数据,然后我从可用数据中计算出更多数据。

所述 HTML 表包含过去 3 天的行。我想将它们全部存储在我的 mysql 表中,并每隔一小时左右更新一次表(这可以通过 cron 完成吗?)

为了连接到数据库,我正在使用MySQLdbwhich 工作正常。但是,我不确定这样做的最佳做法是什么。我可以使用 抓取数据bs4,使用 连接到表MySQLdb。但是我应该如何更新表格?我应该使用什么逻辑来抓取使用最少资源的页面?

我没有获取任何结果,只是抓取和写作。

请问有什么指点吗?

4

2 回答 2

0

您可以采用以下方法:

出于讨论的目的,让master成为抓取数据的最终目的地。那么我们可以采取以下步骤:

  1. 从网页中抓取数据。
  2. 将这些抓取的数据存储在 MySQL 中的临时表中,比如temp
  3. 执行 EXCEPT 操作以仅提取存在于master中但不存在于temp中的那些行。
  4. 将步骤 3 中获得的行保留在表中。

请参阅链接以了解如何在 MySQL 中执行 SET 操作。此外,建议将所有这些逻辑放在存储过程中,并将要处理的数据集传递给它(不确定这部分在 MySQL 中是否可行) 向该方法添加更多步骤- 基于下面的讨论,我们可以使用基于时间戳的列来确定需要放入表中的最新行。如果没有基于时间戳的列,上述基于 SET 的操作的方法效果很好。

于 2013-07-30T07:06:58.367 回答
0

我的建议不是逐行更新值,而是尝试在临时表中使用批量插入,然后根据一些时间键将数据移动到实际表中。如果您有关键列,这将有助于在您添加时读取最近的行。

于 2013-07-30T06:55:27.340 回答