Быстрый парсер

M9
На сайте с 15.05.2014
Offline
79
2064

Как все же спарсит быстро есть код:


$start = microtime(true);

function parser($p1,$p2,$p3){
$num1 = strpos($p1,$p2);
if($num1 === false) return 'ошибка!';
$num2 = substr($p1,$num1);
return strip_tags(substr($num2, 0, strpos($num2,$p3)));
}
function post($url){
include('Snoopy.class.php'); // подключаем «Snoopy»
$snoopy = new Snoopy(); // создаём объект
$snoopy->agent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; uk; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 Some plugins";
$snoopy->cookies["hng"] = 'CN|zh-cn|CNY';
$snoopy->fetch($url);
return $snoopy->results;
}
function translate($text){
$multi = curl_multi_init();
$channels = array();

foreach ($text as $url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_multi_add_handle($multi, $ch);

$channels[$url] = $ch;
}

$active = null;
do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($multi) == -1) {
continue;
}

do {
$mrc = curl_multi_exec($multi, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}

foreach ($channels as $channel) {
$js = json_decode(curl_multi_getcontent($channel));
echo $js->translation.'<br />';
curl_multi_remove_handle($multi, $channel);
}
curl_multi_close($multi);
}
$test = json_decode(parser(post('http://www.panli.com/Crawler.aspx?purl=https://item.taobao.com/item.htm?id=538030372059'),'{"CurrentSkuStr"','</script>'));
foreach($test->Skus as $skus){
$urls[] = 'http://renjith.co.in/translate/translator.php?text='.$skus->PropertyName.'&to=ru';
}
//print_r($test);
translate($urls);
$time = microtime(true) - $start;
printf('<br /><p class="text-center">Скрипт выполнялся %.4F сек.', $time.'</p>');

время обработки 5-15 секунд в среднем 4-6 секунд можно ли как то все это ускорит знатоки парсеров дайте совет.

lutskboy
На сайте с 22.11.2013
Offline
184
#1

попробуйте другой сайт

если так же долго то уберите snoopy а используйте более простой код

M9
На сайте с 15.05.2014
Offline
79
#2

Поменял на


file_get_contents

Стало немного быстрее, странно, разве socet не быстрее чем

file_get_contents
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#3
mega94:
Поменял на

Стало немного быстрее, странно, разве socet не быстрее чем

Вы просто отстали от современных технологий :)

---------- Добавлено 13.03.2017 в 00:25 ----------

$snoopy

Кому он нафиг сдался?!

---------- Добавлено 13.03.2017 в 00:35 ----------

Чтобы быстрее было надо разные прокси подключать лучше китайские и через них мультикурл делать.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
edogs software
На сайте с 15.12.2005
Offline
775
#4

С технической стороны тут никаких никаких проблем, снупи не тормозит (с чего бы? там технологии 100 лет в обед не менялись и еще столько же не изменятся - одна из лучших либ между прочим), мультикурл используется (правда настораживает количество потоков неограниченное и сам он кривой до сих пор между прочим).

Просто надо учесть, что в скрипте контент с taobao.com достается через panli.com , оттуда достается неизвестное количество урлов и они загоняются для перевода в renjith.co.in . Быстрым это не может быть по определению.

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

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Mik Foxi
На сайте с 02.03.2011
Offline
1168
#5

Чтоб парсить китайские сайты - надо хоститься в китае. будет парсинг идти быстрее.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ Форум на замену серчу: https://foxi.biz/
M9
На сайте с 15.05.2014
Offline
79
#6
LEOnidUKG:
Вы просто отстали от современных технологий :)

---------- Добавлено 13.03.2017 в 00:25 ----------



Кому он нафиг сдался?!

---------- Добавлено 13.03.2017 в 00:35 ----------

Чтобы быстрее было надо разные прокси подключать лучше китайские и через них мультикурл делать.

Snoopy на самом деле быстры парсер намного чем аналоги, и вы правильно отметили тут скорее скрипта надо сблизит с Китаем.

---------- Добавлено 13.03.2017 в 15:00 ----------

edogs:
С технической стороны тут никаких никаких проблем, снупи не тормозит (с чего бы? там технологии 100 лет в обед не менялись и еще столько же не изменятся - одна из лучших либ между прочим), мультикурл используется (правда настораживает количество потоков неограниченное и сам он кривой до сих пор между прочим).

Просто надо учесть, что в скрипте контент с taobao.com достается через panli.com , оттуда достается неизвестное количество урлов и они загоняются для перевода в renjith.co.in . Быстрым это не может быть по определению.

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

Торможение не со стороны перевода, просто сайт panli.com медленно спарситься

Наверное у бегет медленный связь с Китаем.

---------- Добавлено 13.03.2017 в 15:05 ----------

foxi:
Чтоб парсить китайские сайты - надо хоститься в китае. будет парсинг идти быстрее.

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

Samail
На сайте с 10.05.2007
Offline
369
#7

Вот такие умники которые хотят за секунду весь сайт спарсить и грузят сервер. Вы на своём tajmarket.tj "быстрый парсер" испытайте.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий