使用解析器将HTML内容解析为MySQL数据库

时间:2011-04-05 03:28:00

标签: mysql html database parsing

我希望能够将网站中的特定内容解析为mySQL数据库。例如,在网站http://allrecipes.com/Recipe/Fluffy-Pancakes-2/Detail.aspx上我想要解析到我的数据库(其中有一个包含RecipeName,Ingredients 1-10的列的表)。

所以基本上我的数据库将包含该食谱的名称和所有成分。没有必要编辑内容,只需按原样解析(即3/4杯牛奶),因为我在我的数据库中使用了字符。

我到底该怎么做?我正在寻找一个预先构建的解析器,因为我对编程很新,所以很难找到一个易于使用的解析器。当然,我可以手动输入值,但我想解析它们。

是否可以解析此内容并编写一个具有RecipieName,Ingredient字符串的文件,然后我可以将其解析到我的数据库中?或者我应该直接进入数据库?我不确定如何直接将数据库连接到解析器,但我可能能够在线找到一些信息。

基本上,我正在寻找有关如何完成这项工作的帮助,因为我不太熟悉编程,而且这似乎比它可能要复杂得多。

我现在使用Java作为我的主要语言,虽然我不能说我非常擅长它。但我应该能够理解基本概念。

有关使用什么解析器或如何执行此操作的任何建议?

谢谢!

1 个答案:

答案 0 :(得分:1)

这就是我在PHP中的表现。这几乎肯定不是最有效的方法,也没有经过调试。

function parseHTML($rawHTML){
 $startPosition = strpos($rawHTML,'<div class="ingredients"'); //Find the position of the beginning of the ingredients list, return the character number.
 $endPosition  = strpos($rawHTML,'</div>',$startPosition);     //Find the position of the end of the ingredients list, begin searching from the beginning of the list (found in step 1)
 $relevantPart = substr($rawHTML,$startPosition,$endPosition); //Isolate the ingredients list
 $parsedString = strip_tags($relevantPart);                    //Strip the HTML tags off of the ingredients list
 return $parsedString;
}

还有待完成:你说你有一个带有10个独立成分列的mySQL数据库。此代码将所有内容输出为一个大字符串。您必须将strip_tags($relevantPart)函数更改为strip_tags($relevantPart,"<li>")。那会让<li>标签通过。然后,您必须遍历每个<li>标记,执行与此类似的功能。它应该不会太难,但我觉得用没有正常运行的PHP服务器来编写它会感觉很舒服。