Я использую PHP, чтобы очистить веб-сайт и собрать некоторые данные. Это все обошлось без использования regex. Я использую php's, взрывают () метод для нахождения конкретных HTML-тэгов вместо этого.
Это возможно, если структура изменений веб-сайта (CSS, HTML), то неправильные данные могут быть собраны скребком. Таким образом, вопрос - как я знаю, изменилась ли структура HTML? Как определить это прежде, чем хранить любые данные к моей базе данных для предотвращения неправильных хранивших данных.
Я думаю, у вас нет никаких чистых решений, если вы очищаете страницу с измененным содержанием.
Я разработал несколько скребков для Python и знаю, как это может расстраивать, когда сайт просто вносит незначительные изменения в свой макет.
Вы можете попробовать решение а-ля механизировать (не знаете аналог PHP), и, если вам повезет, вы можете изолировать контент, который вам нужно извлечь (ссылки?).
Другой возможный подход - это закодировать некоторые ограничения и проверить их перед сохранением в db.
Например, если вы очищаете URL-адреса, вам нужно будет убедиться, что анализируемый парсером формально является допустимым URL-адресом; то же самое для целочисленного идентификатора или того, что вы хотите очистить, что может быть признано действительным.
Если вы очищаете простой текст, его будет сложнее проверить.
Во-первых, в некоторых случаях вам может потребоваться сравнить хэшей оригинала с новым HTML. MD5 и SHA1 - два популярных хэша. Это может быть, а может и не быть справедливым при любых обстоятельствах, но это то, с чем вы должны быть знакомы. Это сообщит вам, если что-то изменилось - контент, теги или что-то еще.
Чтобы понять, изменилась ли структура, вам нужно будет захватить гистограмму вхождений тегов, а затем сравнить их. Если вы заботитесь о том, что теги вышли из строя, вам придется захватить дерево тегов и провести сравнение, чтобы увидеть, встречаются ли теги в том же порядке. Это будет очень специфично для того, чего вы хотите достичь.
PHP Simple HTML DOM Parser - это инструмент, который поможет вам анализировать HTML.
Кстати говоря, здесь я не понимаю, но, возможно, вы захотите взглянуть на некоторые методы PHP объектной модели документа.
http://php.net/manual/en/book.dom.php
Если мое очень, очень ограниченное понимание DOM является правильным, изменение в структуре HTML-сайта изменило бы объектную модель документа, но простое изменение содержания в рамках фиксированной структуры - нет. Итак, если бы вы могли фиксировать состояние DOM, а затем сравнивать его при каждом цикле, не могли бы вы теоретически определить, что такое изменение было сделано?
(Кстати, способ, которым я это сделал, когда пытался чтобы получить уведомление по электронной почте, когда результаты экзамена на гистограмму были опубликованы на определенной странице, просто сравнивали значения file_get_contents (). На удивление, работало безупречно: никаких ложных срабатываний, и отправлял мне по электронной почте, как только сайт разместил контент.)
{ {1}}Если вы хотите знать изменения в отношении структуры, я думаю, что лучший способ - сохранить структуру DOM вашей первой страницы, а затем сравнить ее с новой.
Есть много способов сделать это: - SaxParser DOmParser и т. Д.
У меня есть небольшой блог, который даст некоторые подсказки о том, что я имею в виду http://let-them-c.blogspot.com/2009/04/xml-as-objects-in-oops.html
или вы можете использовать http://en.wikipedia.org / wiki / Simple_API_for_XML или парсер DOm Utility.
Explode ()
не является парсером HTML, но вы хотите знать об изменениях в структуре HTML. Это goi нг быть сложным. Попробуйте использовать парсер HTML. Больше ничто не сможет сделать это должным образом.