Как знать, изменился ли очищаемый веб-сайт?

Я использую PHP, чтобы очистить веб-сайт и собрать некоторые данные. Это все обошлось без использования regex. Я использую php's, взрывают () метод для нахождения конкретных HTML-тэгов вместо этого.

Это возможно, если структура изменений веб-сайта (CSS, HTML), то неправильные данные могут быть собраны скребком. Таким образом, вопрос - как я знаю, изменилась ли структура HTML? Как определить это прежде, чем хранить любые данные к моей базе данных для предотвращения неправильных хранивших данных.

6
задан Yeti 27 March 2010 в 17:52
поделиться

5 ответов

Я думаю, у вас нет никаких чистых решений, если вы очищаете страницу с измененным содержанием.

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

Вы можете попробовать решение а-ля механизировать (не знаете аналог PHP), и, если вам повезет, вы можете изолировать контент, который вам нужно извлечь (ссылки?).

Другой возможный подход - это закодировать некоторые ограничения и проверить их перед сохранением в db.

Например, если вы очищаете URL-адреса, вам нужно будет убедиться, что анализируемый парсером формально является допустимым URL-адресом; то же самое для целочисленного идентификатора или того, что вы хотите очистить, что может быть признано действительным.

Если вы очищаете простой текст, его будет сложнее проверить.

7
ответ дан 8 December 2019 в 17:20
поделиться

Во-первых, в некоторых случаях вам может потребоваться сравнить хэшей оригинала с новым HTML. MD5 и SHA1 - два популярных хэша. Это может быть, а может и не быть справедливым при любых обстоятельствах, но это то, с чем вы должны быть знакомы. Это сообщит вам, если что-то изменилось - контент, теги или что-то еще.

Чтобы понять, изменилась ли структура, вам нужно будет захватить гистограмму вхождений тегов, а затем сравнить их. Если вы заботитесь о том, что теги вышли из строя, вам придется захватить дерево тегов и провести сравнение, чтобы увидеть, встречаются ли теги в том же порядке. Это будет очень специфично для того, чего вы хотите достичь.

PHP Simple HTML DOM Parser - это инструмент, который поможет вам анализировать HTML.

1
ответ дан 8 December 2019 в 17:20
поделиться

Кстати говоря, здесь я не понимаю, но, возможно, вы захотите взглянуть на некоторые методы PHP объектной модели документа.

http://php.net/manual/en/book.dom.php

Если мое очень, очень ограниченное понимание DOM является правильным, изменение в структуре HTML-сайта изменило бы объектную модель документа, но простое изменение содержания в рамках фиксированной структуры - нет. Итак, если бы вы могли фиксировать состояние DOM, а затем сравнивать его при каждом цикле, не могли бы вы теоретически определить, что такое изменение было сделано?

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

{ {1}}
2
ответ дан 8 December 2019 в 17:20
поделиться

Если вы хотите знать изменения в отношении структуры, я думаю, что лучший способ - сохранить структуру 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.

2
ответ дан 8 December 2019 в 17:20
поделиться

Explode () не является парсером HTML, но вы хотите знать об изменениях в структуре HTML. Это goi нг быть сложным. Попробуйте использовать парсер HTML. Больше ничто не сможет сделать это должным образом.

0
ответ дан 8 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: