Реклама на сайте Advertise with us

PhpQuery. парсинг

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 10/04/11 в 14:27       Ответить с цитатойцитата 

снова к теме парсеров smail101.gif.

Цитата:

$a='
<html>
<head>
<meta charset="UTF-8" />
<meta charset="UTF-16" />

<meta http-equiv="Content-Type" content="text/html; charset=UTF-32" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-64" />
</head>

<body>
<div class="title"> тратата </div>
</body>
</html>';


$html = phpQuery::newDocument($a);
echo $html->html(); # покажем всю строку
echo $html->find('div.title'); # найдем див


вывод:
Цитата:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-32"></head></html>

PHP Notice: Trying to get property of non-object in phpQuery-onefile.php on line 679
PHP Fatal error: Call to undefined method stdClass::markup() in phpQuery-onefile.php on line 681


т.е. ничего не находит. внутри вместо строки какое-то дерьмо. без body даже.

Цитата:

$a='
<html>
<head>
</head>

<body>
<div class="title"> тратата </div>
</body>
</html>';

$html = phpQuery::newDocument($a);
echo $html->html();
echo $html->find('div.title');


вывод:
Цитата:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head>
<body>
<div class="title"> тратата </div>
</body>
</html>

<div class="title"> тратата </div>


div.title находит, внутри то что нужно.


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

пришел к победе коммунистического труда

0
 

Чингачгук, вождь красноглазых

С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824

Ссылка на сообщениеДобавлено: 10/04/11 в 16:30       Ответить с цитатойцитата 

FXIX писал:

Как этой либой невалидный хтмл то парсить?


А зачем? Приведи к валидному сначала, для этого тоже тулзы есть.

К примеру

http://en.wikipedia.org/wiki/HTML_Tidy

5
 



С нами с 18.08.04
Сообщения: 6376
Рейтинг: 4430

Ссылка на сообщениеДобавлено: 10/04/11 в 16:44       Ответить с цитатойцитата 

В свое время http://simplehtmldom.sourceforge.net/ неплохо отрабатывал. Либо приводи к валидному

5
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 10/04/11 в 17:47       Ответить с цитатойцитата 

dDan писал:
В свое время http://simplehtmldom.sourceforge.net/ неплохо отрабатывал.

я от него отказался, он тупо подвисал на некоторых страницах yahoo.
phpquery пока что зе бест.

http://habrahabr.ru/blogs/php/114323/
вот кстати неплохой пост о пхп парсерах. хотя главная проблема именно в фатальных багах, согласен.

5
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 13/04/11 в 15:26       Ответить с цитатойцитата 

Dr.Syshalt писал:

http://en.wikipedia.org/wiki/HTML_Tidy


Кто тьюди юзает поделитесь общественно-полезными настройками. Наковырял вроде самые значимые:

Цитата:

doctype: transitional - установка доктайпа (omit - без доктайпа, auto - поставит доктайп на основе анализа документа)
tidy-mark: no - не добавлять спец.тег как флаг обработанного tidy файла
quiet: no - не показывать кол-во ошибок
write-back: yes - писать вывод в этот же файл
force-output: yes - принудительный вывод, даже отработанного с ошибками текста
output-encoding: utf8 - кодировка вывода
input-encoding: utf8 - кодировка ввода
show-errors: 0 - не показывать ошибки
show-warnings: no - не показывать предупреждения
wrap: 0 - правый маргин для текста
drop-proprietary-attributes: yes - удалит проприетарные MS аттрибуты
bare: yes - удаляет теги Microsoft HTML Word 2000, преобразует неразрывные пробелы в простые пробелы
clean: yes - удаляет презентационные Microsoft теги и аттрибуты заменяя их стилевыми правилами и хтмл-разметкой
word-2000: yes - вырезать Microsoft Word 2000 теги
escape-cdata: yes - преобразует секции <![CDATA[]]> в нормальный текст
hide-comments: yes - удаление комментов
merge-divs: no - не сливать вложенные дивы
merge-spans: no - не сливать вложенные спаны

не определился только с этим http://tidy.sourceforge.net/docs/quickref.html#numeric-entities
и с тем надо ли (output-html: yes - вывод как хтмл-документ) писать



2. в пхпквери на строке 517 вроде как ошибка. текст ошибки "PHP Notice: Undefined variable: hltml in /home/user/phpQuery-onefile.php on line 517"

пришел к победе коммунистического труда

0
 



С нами с 27.09.03
Сообщения: 5454
Рейтинг: 2506

Ссылка на сообщениеДобавлено: 13/04/11 в 16:51       Ответить с цитатойцитата 

я вот так запускал, щас уже толком не помню опций
Код:
/usr/lib/tidy -utf8 -wrap 0 -f %ERRORFILE% %FILENAME%

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »