Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Парсинг удалённого HTML файла 
:(
    Опции темы
taral
Дата 10.11.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



У меня возникла потребность в парсинге определённой страници с интернета. До у меня не возникало нужды работать с DOM.
Код

    $url = 'http://yandex.ru/';
    $html = file_get_contents($url);
    $doc = new domDocument('1.0', 'windows-1251');
    $doc->loadHTML($html);
    $items = $doc->getElementsByTagName('a');
    for ($i = 0; $i < $items->length; $i++) {
         $r = $items->item($i)->nodeValue . "<br/>";
         echo $r;
    }

Этот пример работает.
Если я пробую другой сайт. Например google
выдает вот что.
Код

Severity: Warning
Message: DOMDocument::loadHTML() [function.DOMDocument-loadHTML]: htmlParseEntityRef: expecting ';' in Entity, line: 35

Ошибку выдает в строке $doc->loadHTML($html);
Я так понимаю что PHP не может разобрать DOM структуру того HTML.
Каким образом происходит работа с не валидными документами?
Допустим мне нужно вытянуть текст div у которого id="aaa".
Использовать регулярные выражения? Или есть лучше способ?
PM MAIL   Вверх
destrd
Дата 10.11.2008, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: нет
Всего: 4



Ну да, где regexp'ы, где explod'ы и работа со строками. Больше я думаю ничего тут не придумать.
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
taral
Дата 10.11.2008, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 230
Регистрация: 17.1.2008

Репутация: нет
Всего: нет



Ясно спасибо. Просто я до этого только в JavaScript с DOM работал.
Ну и привык что все просто выходит) Буду дерзать.
PM MAIL   Вверх
skyboy
Дата 11.11.2008, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(taral @  10.11.2008,  18:25 Найти цитируемый пост)
Ошибку выдает в строке $doc->loadHTML($html);

хм. а дерево-то строится? между прочим, это не ошибка, а предупреждения. после выдачи предупреждения скрипт вполне себе продолжает работу, просто честно предупреждает - "со мной чей-то не то, могу глючить". а loadHTML и  заявлен как метод для загрузки "not well-formed XML"

Добавлено через 1 минуту и 34 секунды
а ругается, скорее всего, на & который не превращен в &amp; - потому как пытается распарсить в "?param1=value1&param2="  некую xml-entity &param2 и ругается на несуществование подобного.
PM MAIL   Вверх
getme
Дата 16.11.2008, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 12.9.2008

Репутация: нет
Всего: -2



дерево построится, Я к примеру просто подавляю @$doc->loadHTML($html); предупреждение
ничего критического в этом невижу.
PM MAIL   Вверх
bars80080
Дата 17.11.2008, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 1
Всего: 315



а вот это фигово, что в случае, который ты можешь пофиксить, ты игнорируешь, а не исправляешь
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.