所以...我有一个HTML文件,其中包含一个包含约2k人数据的表。这些数据包括(但不限于)地址,电子邮件,电话,银行账户等。
我需要将所有这些数据都放到MySQL数据库中。到目前为止,我的尝试是:
1)将其全部放在 form 标记内,并尝试(jquery-)序列化它。 太大。
2)在HTML结构中找到一个模式,以便我可以:
a)编写千个的SQL插入查询 或
b)在服务器端程序中接收它。
没有找到模式。
3)只需访问包含数据库即可。不。所有数据都在这里。数据库消失了。消失了。
该文件大约46MB,共包含1,086,177行。这些中有空行。因此,只需尝试在Notepad ++中打开文件大约需要5秒钟,在Chrome中运行它会占用大约400MB RAM,甚至VIM也需要一段时间来运行它。
实际上,它并不那么困难。我的意思是,有一个<table align="center" width="100%">
<tbody>
在它之上...问题是所有数据,独立于什么或者是谁,仅由无穷无尽的行分隔,例如
<tr>
<td nowrap="" align="right" valign="baseline">
<div align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><font color="#FF0000">*</font>
Email:</font></div>
</td>
<td nowrap="" align="left" valign="baseline"><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#0000CC"><b>
<font color="#990000">email</font></b></font> </td>
<td nowrap="" align="right" valign="baseline"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">
__Password__: </font></td>
<td nowrap="" align="right" valign="baseline">
<div align="left">
****
</div>
</td>
</tr>
任何,任何,任何的想法都是非常受欢迎的。
编辑:为了让事情更清楚:我需要找到一个模式。 VIM / Notepad ++查找/替换表达式来创建某些东西我可以扔进MySQL数据库以某种方式 - 包括SQL脚本,后查询字符串等。
答案 0 :(得分:0)
事实证明,你可以简化事情。首先,在一些更好的文本编辑器(如Notepad++)中打开它,并用空字符串替换制表符,连续空格和换行符。这应该会减少文件的大小。
然后在浏览器中打开它,并在控制台中运行此代码段:
var cells = document.getElementsByTagName('td')
for (i = 0; i < cells.length; i++) {
cells[i].innerHTML = cells[i].innerText
}
我用你提供的HTML运行它,结果DOM(通过document.body.innerHTML
获得)是这样的:
<table align="center" width="100%">
<tbody>
<tr>
<td nowrap="" align="right" valign="baseline">* Email:
</td>
<td nowrap="" align="left" valign="baseline">email</td>
<td nowrap="" align="right" valign="baseline">__Password__:</td>
<td nowrap="" align="right" valign="baseline">****</td>
</tr>
</tbody>
</table>
如您所见,不必要的<font>
和<div>
标签不再存在。现在,如果您忽略这些属性,那么您将拥有一个包含模式的单元格的表:
<td>name</td>
<td>value</td>
<td>name</td>
<td>value</td>
[编辑开始]
好的,这是另一个进一步简化事情的脚本:
var cells = document.getElementsByTagName('td');
for (i = 0; i < cells.length; i++) {
cells[i].outerHTML = '<td>' + cells[i].innerHTML + '</td>';
}
这将DOM简化为以下内容:
<table align="center" width="100%">
<tbody>
<tr>
<td>* Email:
</td>
<td>email</td>
<td>__Password__:</td>
<td>****</td>
</tr>
</tbody>
</table>
[编辑结束]
所以这些是名称值对。
您可以使用此处提供的代码段将HTML复制到剪贴板:How do I copy to the clipboard in JavaScript?
复制后,您可以将其保存到文件中。如果这也无法用于数据提取,您可以以这种方式一次一个地使用简单脚本继续简化文档。