ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 18.11.2009, 17:50
zifanchuck
Постоянный
Регистрация: 27.10.2008
Сообщений: 491
С нами: 9230096

Репутация: 464
По умолчанию

Вот вчеа нужна была прога для парсинга. Нашел BackLink Gear но он парсит со страниц. Но ето меделнно и кажды сайт нужно отдельно вводить. Написал небольшой скриптик, парсит беки сайтов которые находяться в файле urlyahoo.txt и ложит беки в backs.txt. Преимущество скрипта в том что он не шарит по страницам а качает .tsv в котором первые 1000 беков(лимит хоть по страницам шарь хоть файл скачай) но намного быстрее. Работает на курле. Кстати те урлы что отпарсил он из файла urlyahoo.txt удаляет (делал для себя спец. чтобы если скрипт вырубился и не рыскать в поисках того на каком урле он именно остановился) .Вот
PHP код:
<?php

set_time_limit
(0);

function 
curl($url,$post)
{
$cfile = 'cookies.txt';
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);
curl_close($ch);
return 
$result;
};

$sleep = 4;
$fileurl = "urlyahoo.txt";

$fd = fopen($fileurl, 'r');
$read = fread($fd, filesize($fileurl));
fclose($fd);

$read = explode("\r\n", $read);
$count = count($read);

for(
$i=0;$i<$count;$i++)
{
list(
$url, $all) = explode("     ", $read[$i]);

unset(
$read[$i]);
$reads = implode("\r\n", $read);

$fd = fopen($fileurl, 'w');
fwrite($fd, $reads);
fclose($fd);

$result = curl("http://siteexplorer.search.yahoo.com/export?p=".$url."&bwm=i&fr=sfp", "");

$result = explode("\n", $result);
$countstr = count($result);
    for(
$a=2;$a<$countstr;$a++)
    {
    list(
$text, $ssil) = explode("    ", $result[$a]);
    if(
$ssil)
    {
    
//echo $ssil."<br>";
    
$fd = fopen("backs.txt", "a");
    
fwrite($fd, $ssil."\r\n");
    
fclose($fd);
    }
    }
sleep($sleep);
}
?>
Вот подумал может у кого нет курла то пускай попробуют так
PHP код:
<?php

set_time_limit
(0);

$sleep = 4;
$fileurl = "urlyahoo.txt";

$fd = fopen($fileurl, 'r');
$read = fread($fd, filesize($fileurl));
fclose($fd);

$read = explode("\r\n", $read);
$count = count($read);

for(
$i=0;$i<$count;$i++)
{
list(
$url, $all) = explode("     ", $read[$i]);

unset(
$read[$i]);
$reads = implode("\r\n", $read);

$fd = fopen($fileurl, 'w');
fwrite($fd, $reads);
fclose($fd);

$result = file_get_contents("http://siteexplorer.search.yahoo.com/export?p=".$url."&bwm=i&fr=sfp");

$result = explode("\n", $result);
$countstr = count($result);
    for(
$a=2;$a<$countstr;$a++)
    {
    list(
$text, $ssil) = explode("    ", $result[$a]);
    if(
$ssil)
    {
    
//echo $ssil."<br>";
    
$fd = fopen("backs.txt", "a");
    
fwrite($fd, $ssil."\r\n");
    
fclose($fd);
    }
    }
sleep($sleep);
}
?>
п.с за роботу второго не ручаюсь(не тестил)
ппс Только не надо говорить что скрипт криво написан)))согласен, можно было более рационально все сделать, но писал чисто для себя, а на красоту мне как-то пофиг)) только бы работал)
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.