АРМАДА
Парсер для буржуйнета
На страницу Пред.  1, 2, 3, 4
Новая тема Написать ответ
Вт Мар 16, 2010 7:40 pm Start Post: Парсер для буржуйнета 

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Чт Мар 25, 2010 12:15 pmОтветить с цитатой
А. Это я вчера без проверки дописывал установку тайм аута отдельную. Проверял без этого, а дописывал уже когда на форум запостил. Забыл точку с запятой поставить. Поправил, теперь всё работает. Копируй из того же поста.
Cabal - патентованный зануда.

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Чт Мар 25, 2010 2:10 pmОтветить с цитатой
Тьфу. Не везёт. Пока исправлял ещё одну помарку сделал :D . Причём переписывал с рабочего кода на форум. Надо было через "копиравать-вставить делать" а то я клуша оказывается ещё та Sad . Теперь поправил всё стопудова работает, проверял.
Cabal - патентованный зануда.

StrukOff + + +
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 128
Обратиться по нику
# Добавлено:Чт Мар 25, 2010 7:56 pmОтветить с цитатой
Cabal, чет всё ранво он работает криво... Sad
У меня в файл link накидал одни и те же урлы с периодичностью в ~50 линков (т.е. парсит всё время по 50 и повторят их одинаковые). bums
И ещё как только нарывается на плохую проки то тут же останавливается и говорит "proxy is empty!" :`(
Т.е. в принципе толку от использования прокси больше не становиться, нужно чтобы он в случае косяка брал следующую, если дошёл до последней начинал с начала, или ещё лучше, просил подкинуть новых через форму.
Кагбэ фишка в том, что первых 3к урлов можно и так забрать, там всё понятно, прокси не нужны, а вот то что идет после, вот это уже самое вкусное и интересное, но парсер после остановки начинает по новой... Smile
Чтоб как поставить на 10 часов, и он все форумы и блоги пособирал из гугля, чтоб только и успевать прокси новых засыпать Smile
P.S> Я знаю что уже достал с этим парсером, просто хотелось бы иметь "суперпарсер" и им собрать лучшую базу интернета Smile


Последний раз редактировалось: StrukOff (Чт Мар 25, 2010 8:00 pm), всего редактировалось 1 раз
Выгодно продать или купить мобильный адалт трафик можно на Mpay69.biz

adamant
V.I.P.
Зарегистрирован: 20.03.2008
Сообщений: 11494
Обратиться по нику
# Добавлено:Чт Мар 25, 2010 7:59 pmОтветить с цитатой
StrukOff, можь те сразу деньгами отдать?
Cabal, я не проверял твою версию, но лучше пусть она будет немного кривая, а кому надо найдут причину.
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: evasupport@jabber.org и ICQ: 750000
Unlimited on 1Gbs port |

StrukOff + + +
Опытный
Зарегистрирован: 25.12.2009
Сообщений: 128
Обратиться по нику
# Добавлено:Чт Мар 25, 2010 8:01 pmОтветить с цитатой
adamant, могу заплатить, если будет не очень дорого Smile
Просто сам в пхп почти нифига не смыслю.
Выгодно продать или купить мобильный адалт трафик можно на Mpay69.biz

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Пт Мар 26, 2010 9:37 pmОтветить с цитатой
Сори что не сразу ответил было не до форума.
StrukOff писал(а):
Cabal, чет всё ранво он работает криво... Sad
У меня в файл link накидал одни и те же урлы с периодичностью в ~50 линков (т.е. парсит всё время по 50 и повторят их одинаковые). bums


Не понял в чём там у тебя проблема. Эта всё было ещё у Адаманта я там ничего не трогал. Ты вроде его парсер хвалил и просил что бы дописали а не новый сделали.
Ну короче сделал так чтобы всё было немного более наглядно понятно и что бы скрипт сохранял только уникальные ссылки. Наверно ты этого хотел.
StrukOff писал(а):

И ещё как только нарывается на плохую проки то тут же останавливается и говорит "proxy is empty!" :`(


Нет такого. Разве что только у тебя все прокси дохлые или забаненные гуглом. Ещё есть вероятность что пока копировали вставляли код изуродовали что то(форум не лоялен к размещению кода). Короче я выложу на обменник файл ещё. качай оттуда не надо ничего копировать. Просто у меня всё нормально работает.
StrukOff писал(а):

или ещё лучше, просил подкинуть новых через форму.


Не это мне лень... Сделаю что бы если парсер вылетает из-за того что прокси кончились можно было начать с того же запроса при следующем запуске, а формочки делать это уволь...
StrukOff писал(а):

P.S> Я знаю что уже достал с этим парсером, просто хотелось бы иметь "суперпарсер" и им собрать лучшую базу интернета Smile


Да уж. Мне тоже когда то хотелось. Для этого собственно и перешел на питон потому что всякие доргены и на php выходили нормально а вот парсер хотелось на питоне. Вот перешел на питон и с тех пор на пхп как то не писал ничего почти...
Не думал что после перерыва так сложно начать писать на PHP опять. :D


Последний раз редактировалось: Cabal (Пт Мар 26, 2010 10:32 pm), всего редактировалось 2 раз(а)
Cabal - патентованный зануда.

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Пт Мар 26, 2010 9:41 pmОтветить с цитатой
Вот Файл:
http://uploading.com/files/fc7fb647/pars.php/
Внимание. У переменной $n теперь значения не от 10 до 100 как было у Адаманта, а от 1 до 10. Это соответствует количеству страниц на которое вы хотите парсить в глубь. Там сейчас стоит циферка "1" что соответствует глубине парсинга в одну страницу или 100 результатов если хотите что бы глубина была максимальной поставьте там циферку "10" что соответствует глубине в 10 страниц или 1000 результатов.

А вот код:
[offtop]
<?php

set_time_limit(0);

$n = 1; //глубина от 1 страницы(100 ссылок) до 10(1000 ссылок)
$timeout = 0;//тайм-аут между запросами к Г
$keywords = file('keywords.txt') or die('keywords.txt is empty!'); // файл с ключами
$proxy_list = file('proxy.txt') or die('proxy.txt is empty!'); //файл спроксями

function get($url,$proxy) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "(compatible; MSIE 6.01; MSN 2.5; AOL 4.0; Windows Server 2003)");
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
#curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);
if($proxy!=false){
curl_setopt($ch, CURLOPT_PROXY, $proxy);
}
$ss=curl_exec($ch);
curl_close($ch);
return $ss;
}

function googlelinkparse($keyword,$n) {
global $proxy_list;
$proxy = false;
$keyword = str_replace(' ','+',$keyword);
$url ="http://www.google.ru/search?q=".$keyword."&num=100&filter=0&start=".$n."00";
while(1){
$file = get($url, $proxy);
if (strstr($file, 'Google</title>')){
#print "ОК!\r\n";
break;
}else{
if(count($proxy_list) == 0){
file_put_contents('log.ini', str_replace('+',' ',$keyword));
}
$proxy = trim(array_pop($proxy_list)) or die('proxy is empty!');
}

}
$exp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if (preg_match_all("/$exp/siU", $file, $matches, PREG_SET_ORDER)) {
$c = count($matches);
for ($i=0; $i<$c; $i++) {
if (strstr($matches[$i][2],'http://') && !strstr($matches[$i][2],'google') && !strstr($matches[$i][2],'search?q=cache') && !strstr($matches[$i][2],'youtube') && !strstr($matches[$i][2],'/aclk?sa')) {
$links[] = $matches[$i][2];
}
}
}
return $links;
}

if (file_exists('log.ini')){
$oldinter=file_get_contents('log.ini');
$k=array_search($oldinter, array_map("trim",$keywords)) or die("OLOLO!!!");
}else{
$k = 0;
}

function c($uri){
$uri=rtrim($uri, "/");
return $uri;
}
$result=array();
for ($m=$k; $m<count($keywords);$m++){
$keyword = trim($keywords[$m]);
for ($i=0; $i<$n; $i++) {
$link = googlelinkparse($keyword,$i);
$result=array_merge($link, array_map("c", $result));
$result = array_unique($result);
file_put_contents('links.txt', implode("\r\n",$result));
sleep($timeout);
}
}
if (file_exists('log.ini')){
unlink('log.ini');
}
?>

[/offtop]
adamant, да ладно тебе. Простенький одно поточный парсер - игрушка. Пусть будет у народа.
Cabal - патентованный зануда.

adamant
V.I.P.
Зарегистрирован: 20.03.2008
Сообщений: 11494
Обратиться по нику
# Добавлено:Пн Май 10, 2010 6:38 amОтветить с цитатой
да это я выставлял что б он выпарсивал все найденые страницы, считать было лень сколько а так он парсил пока не закончиться вся выдача по запросу. повторы потому что в гугле с одного форума или блога может быть несколько совпадений и он выпарсивал все варианты а удаления даблов по доменейме нету там.

Cabal тебе огромное человеческое спасибо за то что ты его немного дописал Drinks or Beer :thup:
EvaPharmacy. Чтобы мазать хлеб икоркой, Ева – лучшая партнёрка! Инвайты Jabber: evasupport@jabber.org и ICQ: 750000
Unlimited on 1Gbs port |

Cabal
Гуру
Зарегистрирован: 20.10.2007
Сообщений: 1360
Обратиться по нику
# Добавлено:Пт Май 21, 2010 9:04 pmОтветить с цитатой
Та как бы не за что. Особенно если посмотреть на колличество раз сколько я его переписывал из за своих собственных ошибок Smile Всё таки PHP - тест на внимательность который расслабленный питоном(там архитектура не позволяет допускать таких ошибок) моск клущи-быдлокодера вроде меня проходит не сразу :D
Cabal - патентованный зануда.

cybermake
Свой
Зарегистрирован: 12.05.2011
Сообщений: 2
Обратиться по нику
# Добавлено:Вс Май 15, 2011 1:46 pmОтветить с цитатой
Вот , посмотрите мой парсер http://cybermake.ru/view/view_web_parser.php
СЕО СОФТ ОТ CyberMake на
http://cybermake.ru
Новая тема Написать ответ    ГЛАВНАЯ ~ ПОИСКОВЫЕ СИСТЕМЫ

Перейти:  





Генеральный спонсор



Партнеры