соскабливать страницу - PullRequest
       1

соскабливать страницу

0 голосов
/ 13 февраля 2011

Что было бы наилучшим методом устранения ужасного беспорядка на странице инвентаря дистрибьютора (используя js для document.write

, затем используя открытый текст html, чтобы закрыть его)?Никакие divs / tds / что-либо не помечены каким-либо идентификатором или классами и т. Д.

Должен ли я просто выполнить preg_match (? _ All), или есть какая-то магия xpath, которую я могу сделать?Нет ни API, ни каналов, ни XML, ни чего-либо чистого.

edit:

- То, о чем я в основном думаю об atm, это что-то вроде http://pastebin.com/raw.php?i=EuMfRVD5 - эточто моя лучшая ставка или есть другой способ?

Ответы [ 2 ]

0 голосов
/ 13 февраля 2011

Ваш пример не достаточно для примера.Но так как, по-видимому, метаинформация выделения в любом случае вам не нужна, JS-обфускация может быть отменена с небольшим количеством:

$html = preg_replace('# <script .*? (?: document.write\("(.*?)"\) )? .*? </script> #six', "$1", $html);

Возможно, этого уже достаточно, чтобы потом передать его через одну из библиотек DOM.

0 голосов
/ 13 февраля 2011

Как правило, вы всегда должны использовать http://www.php.net/DOM для анализа страницы.Regex ужасен и обычно совершенно невозможен для анализа html, потому что это не то, для чего он был создан.

Однако ... если на странице используется много javascript для вывода материала, вы в любом случае являетесь SoL. лучший , который вы действительно можете сделать, чтобы получить полную картинку, - это взять ее, запустить через браузер и проанализировать то, что отображается.Это можно автоматизировать, хотя это своего рода пита для настройки.

Но ... учитывая проблему, из-за которой выводится большая часть j / j ... возможно, регулярное выражение действительно будет лучшим маршрутом.Но я полагаю, что в первую очередь это зависит от того, что представляет собой фактический контент и что вы пытаетесь получить со страницы.

...