从包含数千行的HTML表更新MySQL表

时间:2013-07-30 06:33:03

标签: python mysql beautifulsoup mysql-python

我在网络上有一个html文件,几乎每分钟都会更新一个表中的新行。在任何一点上,该文件包含接近15000行,我想创建一个包含表中所有数据的MySQL表,然后再根据可用数据计算一些。

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

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

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

请指点什么?

2 个答案:

答案 0 :(得分:0)

我的建议不是逐行更新值,而是尝试在临时表中使用批量插入,然后根据某个计时键将数据移动到实际表中。如果你有一个关键列,它可以在你添加时阅读最近的行。

答案 1 :(得分:0)

您可以采用以下方法:

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

  1. 从网页上抓取数据。
  2. 将这些已删除的数据存储在MySQL中的临时表中,如 temp
  3. 执行EXCEPT操作,仅提取中存在的行,但不包括 temp 中的行。
  4. 将步骤3中获得的行保留在表中。
  5. 请参阅this链接以了解如何在MySQL中执行SET操作。此外,建议将所有这些逻辑放在存储过程中并将其传递给要处理的数据集(不确定MySQL中是否可以使用此部分)  向方法添加一个步骤 - 基于下面的讨论,我们可以使用基于时间戳的列来确定需要放入表中的最新行。如果没有基于时间戳的列,上述基于SET的操作方法效果很好。