скрипт добавления контента к себе на сайт уже написал,все готово ))
после подготовки в гугл), возникло несколько вопросов :
1) Если я пропарсю весь контент из чужого сайта, а потом правообладатель напишет моему провайдеру что , этот " нехороший человек" стырил у меня весь контент даже внешние ссылки не поставил , провайдер может за такое забанить?
2) Второе и главное .
Есть куча вариантов парсинга, так как первый раз, хотелось бы узнать о выборе варианта, мнения людей с опытом .
из тех что нашел это:
1) парсить с помощью стандартных ПХП функций .(не слишком гибкий на мой взгляд)
2) парсить с cURL.
3)PHP парсинг HTML, с помощью simple HTML DOM
4) парсинг регулярными
5) есть мысль парсить с JQUERY (не нашел ничего по этому варианту)
хотелось бы получить совет что бы было, максимально просто и "гибгость".)
кто как парсит ?
Спустя 14 минут, 32 секунды (11.03.2012 - 18:00) alexbel2404 написал(а):
curl + регулярки
Спустя 47 секунд (11.03.2012 - 18:00) Bodich написал(а):
самый сложный вариант (((
Спустя 3 минуты, 40 секунд (11.03.2012 - 18:04) Игорь_Vasinsky написал(а):
1) парсить с помощью стандартных ПХП функций .(не слишком гибкий на мой взгляд)
2) парсить с cURL.
3)PHP парсинг HTML, с помощью simple HTML DOM
1,2 - + регулярки
3 - редко когда
2) парсить с cURL.
3)PHP парсинг HTML, с помощью simple HTML DOM
1,2 - + регулярки
3 - редко когда
Спустя 21 минута, 26 секунд (11.03.2012 - 18:26) Nikitian написал(а):
Парсить мультикурлом и phpQuery. phpQuery - как раз ваш вариант про разбор html как в jquery. Может быть работает и медленнее, чем регулярки и строковые функции, зато разработка очень быстрая получается.
Спустя 1 час, 9 минут, 26 секунд (11.03.2012 - 19:35) alexbel2404 написал(а):
Цитата (Nikitian @ 11.03.2012 - 19:26) |
Парсить мультикурлом и phpQuery. phpQuery - как раз ваш вариант про разбор html как в jquery. Может быть работает и медленнее, чем регулярки и строковые функции, зато разработка очень быстрая получается. |
если парсить не много, то phpQuery подойдет, если же много - то надо закупить оч. много оперативки )) потому что жрет он немерено)
Спустя 19 минут, 16 секунд (11.03.2012 - 19:54) Nikitian написал(а):
Из последнего: напарсил полмиллиона описаний отелей общим объёмом более гигабайта чистых данных и 7+ миллионв телефонов с некоторыми данными объёмом полгига. Особых проблем с памятью не заметил при условии, что парсеры работали на продакшн сервере с кучей дргих сайтов. Единственное что делал дя оптимизации памяти - завязал парсер на работу от раузера и парсилось частями, периодически перезагружаясь - так снижаются требования к железу и настройкам площадки.
Спустя 2 часа, 22 минуты, 4 секунды (11.03.2012 - 22:16) Bodich написал(а):
Nikitian Спасибо!!! phpQuery отличный вариант!)
вопрос по селекторам : задача выбрать все див с класом maincont все теги
span всередине тегов h2 (выбирает!!),но нужно исключит если h2 span в li
пробовал:
$hentry = $document->find('div.maincont h2 span:not(:has(>li)');
вообщим это нужно исключить
вопрос по селекторам : задача выбрать все див с класом maincont все теги
span всередине тегов h2 (выбирает!!),но нужно исключит если h2 span в li
пробовал:
$hentry = $document->find('div.maincont h2 span:not(:has(>li)');
вообщим это нужно исключить
<li>
<h2><span style="font-size: small;">около 500 гр. печени<br /></span></h2>
</li>
Спустя 35 минут, 19 секунд (11.03.2012 - 22:52) Nikitian написал(а):
Как-то так наверно. Не проверял
$items = pq("div.maincont h2>span");
foreach($items as $item){
if(pq($item)->parent()->parent()->attr("tagName")=="LI")continue;
//Далее полезный код
}
Спустя 25 минут, 45 секунд (11.03.2012 - 23:17) Bodich написал(а):
ыы не получатся
может как то можно сразу выбрать все кроме контента в li
как то типа
может как то можно сразу выбрать все кроме контента в li
как то типа
$document->find('div.maincont h2 span > *:not(li)');?
Спустя 23 минуты, 33 секунды (11.03.2012 - 23:41) Bodich написал(а):
<h2><span style="font-size: small;"> это выбираем1</span></h2>
<h2><span style="font-size: small;">это выбираем2</span></h2>
<h2><span style="font-size: small;">это выбираем3 </span></h2>
<ul style="font-size: small;">
<li>
<h2><span style="font-size: small;">НЕ ВЫБИРАЕМ1 </span></h2>
</li>
<li>
<h2><span style="font-size: small;">НЕ ВЫБИРАЕМ1 </span></h2>
</li>
<li>
<h2><span style="font-size: small;">НЕ ВЫБИРАЕМ1 </span></h2>
</li>
<li>
<h2><span style="font-size: small;">НЕ ВЫБИРАЕМ1 </span></h2>
</li>
<li>
<h2><span style="font-size: small;">НЕ ВЫБИРАЕМ1 </span></h2>
</li>
</ul>
<h2><span style="font-size: small;"> выбираем5</span></h2>
Спустя 22 минуты, 36 секунд (12.03.2012 - 00:04) Bodich написал(а):
$items = pq("div.maincont h2>span");
foreach($items as $item){
if(pq($item)->parent()->parent()->attr("tagName") !== "LI") continue;
//Далее полезный код
$pq[] = pq($item)->html();
/
}
echo $pq[3];
где ошибка может быть?
Спустя 21 минута, 54 секунды (12.03.2012 - 00:25) Nikitian написал(а):
Может перед выборкой сделать так?
pq("ul")->remove();
Спустя 24 минуты, 51 секунда (12.03.2012 - 00:50) Bodich написал(а):
вот решение :
СПАСИБО!!! работает как надо!!
$hentry = $document->find('div.maincont ');
pq("ul")->remove();
$hentry = $document->find('div.maincont h2 span ');
foreach ($hentry as $el) {
$pq[] = pq($el)->html(); // Это аналог $ в jQuery
}
echo $pq[0];
СПАСИБО!!! работает как надо!!