Разбор HTML-контента в базу данных MySQL с использованием парсера - PullRequest
0 голосов
/ 05 апреля 2011

Я хочу иметь возможность анализировать определенный контент с веб-сайта в базе данных MySQL. Например, на сайте http://allrecipes.com/Recipe/Fluffy-Pancakes-2/Detail.aspx я хочу проанализировать свою базу данных (в которой есть таблица с столбцами RecipeName, Ingredients 1-10).

Так что в основном моя база данных будет содержать название и все ингредиенты для этого рецепта. Нет необходимости редактировать контент, просто проанализируйте его как есть (т.е. 3/4 стакана молока), так как я использую символ в своей базе данных.

Как именно я могу это сделать? Я искал готовые парсеры, и кажется, что трудно найти тот, который прост в использовании, так как я довольно новичок в программировании. Конечно, я могу вручную ввести значения, но я хочу их проанализировать.

Можно ли было бы просто проанализировать это содержимое и написать файл, содержащий строку RecipieName, Ingredient, которую я затем смогу проанализировать в моей базе данных? Или я должен просто сделать это прямо в базу данных? Я не уверен, как напрямую подключить базу данных к парсеру, но, возможно, мне удастся найти некоторую информацию в Интернете.

По сути, я ищу помощи в том, как именно это сделать, поскольку я не очень хорошо разбираюсь в программировании, и это кажется намного сложнее, чем могло бы быть.

Я сейчас использую Java в качестве основного языка, хотя не могу сказать, что у меня это хорошо получается. Но я должен быть в состоянии понять основные понятия.

Какие-либо предложения по поводу того, какой парсер использовать или как это сделать?

Спасибо!

1 Ответ

1 голос
/ 05 апреля 2011

Вот как я бы сделал это на 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;
}

Еще предстоит сделать: вы говорите, что у вас есть база данных mySQL с 10 отдельными столбцами ингредиентов. Этот код выводит все как одну большую строку. Вам нужно изменить функцию strip_tags($relevantPart) на strip_tags($relevantPart,"<li>"). Это пропустит теги <li>. Затем вам нужно было бы перебрать все теги <li>, выполняя функцию, аналогичную этой. Это не должно быть слишком сложно, но я не чувствую себя комфортно, когда пишу это без функционирующего PHP-сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...