[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Парсинг сайтов
Bodich
передо мной стала задача пропарсить сайт.
скрипт добавления контента к себе на сайт уже написал,все готово ))
после подготовки в гугл), возникло несколько вопросов :

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 - редко когда

Спустя 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)');
вообщим это нужно исключить


<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

как то типа
$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];


СПАСИБО!!! работает как надо!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.