Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Парсинг одного сайт


Автор: DenWPF 17.8.2011, 13:24
Я делал не большой скрипт чтобы достать анкор. <a href=''>АНКОР</a>

Использовал http://simplehtmldom.sourceforge.net/.

Все получалось пока я не попал на большой сайт, и мне выдалась ошибка, что памяти использовано больше чем разрешено.

Кто может подсказать какой нибудь парсер который не имеет такой проблемы, и сразу покажите пример на этом сайте.

К примеру достать все ссылки.

Автор: CruorVult 17.8.2011, 13:55
Цитата(DenWPF @  17.8.2011,  13:24 Найти цитируемый пост)
и мне выдалась ошибка, что памяти использовано больше чем разрешено


была такая-же проблема, после чего выкинул simplehtmldom и перешел на http://php.net/manual/ru/class.domdocument.php

Добавлено через 2 минуты и 57 секунд
Код

$dom = new DOMDocument('1.0', 'UTF-8');        
$dom->loadHTML($HTML);
$res = $dom->getElementsByTagName("a");

Автор: DenWPF 17.8.2011, 15:27
Это я понимаю встраиватся в php на сервере?

просто я не имею доступ настройкам сервера.

Автор: CruorVult 17.8.2011, 15:32
DOM-расширение входит состав в пхп 5 и включено по умолчанию.

У вас что пхп не находит этого расширения?

Автор: DenWPF 17.8.2011, 17:09
Цитата

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' in Entity, line: 63 in 

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' in Entity, line: 63 in  

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: expecting ';' in Entity, line: 63 in

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Unexpected end tag : head in Entity, line: 63 in 

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseStartTag: misplaced <body> tag in Entity, line: 64 in 

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: error parsing attribute name in Entity, line: 108 in  

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID search-form already defined in Entity, line: 29735 in  

Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: ID s already defined in Entity, line: 29737 in  



Код

$urlParse = "http://www.windowsaffinity.com/?p=14721";
$dom = new DOMDocument('1.0', 'UTF-8');        
$dom->loadHTML(file_get_contents($urlParse));
$res = $dom->getElementsByTagName("a");
        vam_dump($res);
    

Автор: CruorVult 17.8.2011, 17:24
Ворнинги связаны с ошибки в самом хтмл. Прийдется отключить. 

Автор: solenko 17.8.2011, 17:25
Эт ругется на невалидный XML.
В свое время очень спас http://framework.zend.com/manual/en/zend.dom.html -- он и легкую невалидность умеет исправлять, насколько помню, и не прожорлив.

Еще с невалидным xml умеет работать родной http://nl.php.net/manual/en/book.xmlreader.php

Автор: DenWPF 17.8.2011, 17:36
я его как то смотрел но не разобрался что к чему.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)