Jump to content
VaD_SuNeTe

Ajutor PHP , crawlere PHP

Recommended Posts

Depinde foarte mult de cat de complex este siteul, cat de complexe sunt url-urile.

La url-urile simple, cu ?moloz=1 trebuie sa stii la ce numar se opreste sau ce apare cand se opreste.

La url-urile complicate, cu site.tld/moloz/nume , unde nume este de exemplu titlul articolului va fi necesar inainte sa folosesti un alt crawler si sa inregistrezi fiecare pagina in baza de date. Un exemplu: crawler pentru categorii, crawler pentru paginile articolelor si de-abia la sfarsit crawlerul pentru articole.

Acum ca am lamurit cum facem cu url-urile trebuie sa le si „vizitezi” cumva. Pentru asta poti folosii doua functii:

file_get_contents('http//pagina-de-vizitat.tdl'); // cea mai usoara

PHP: file_get_contents - Manual

si curl - cea grea, PHP: cURL - Manual

Apoi folosesti regexp si preg_match_all sa iei ce doresti din sursa returnata de pagina vizitata cu curl sau file_get_contents

Link to comment
Share on other sites

<?php 
//include('adf.php');
header("Content-type: text/plain");
include("config.php");
$ch = curl_init();
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'Vivacookie.txt');
curl_setopt ($ch, CURLOPT_COOKIESESSION, 1);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
//curl_setopt ($ch, CURLOPT_VERBOSE, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_BINARYTRANSFER, 1);
//curl_setopt ($ch, CURLOPT_HEADER, 1);
//LOGIN
curl_setopt ($ch, CURLOPT_URL, 'http://vivaprograms.com/index.php');
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'login_name=USER&login_password=PAROLA&login=submit');
$creap=curl_exec ($ch);
curl_setopt ($ch, CURLOPT_URL, 'http://vivaprograms.com/index.php');
$creap=curl_exec ($ch);
//echo $creap;
$total = 0;
for($pg = 50;$pg<3500;$pg++)
{
curl_setopt ($ch, CURLOPT_URL, 'http://vivaprograms.com/page/'.$pg.'/');
$data=curl_exec ($ch);

if(!preg_match_all('$base shortstory.*?<a href="http://vivaprograms\.com/(nulled-scripts|webmasters|templates|seo-tools|resources)/([0-9]+)-([a-z0-9-/]+)\.html">(.*?)</a></h3>.*?<div id="news-id-[0-9]+" style="display:inline;">(.*?)</div>\r\n\t\t\t<div class="clr"></div>$is',$data,$contz)){ echo $data;
break;}
for($c = 0;$c<count($contz[0]);$c++)
{
if(mysql_num_rows(mysql_query("SELECT id FROM posts WHERE source=2 AND sid='".$contz[2][$c]."';")))continue;
$total ++;
$Post = array();
$Post['category']=str_replace('nulled-','',$contz[1][$c]);
$Post['sid']=$contz[2][$c];
$Post['url']=mysql_real_escape_string($contz[3][$c]);
$Post['title']=mysql_real_escape_string($contz[4][$c]);
$Post['smaldesc']=mysql_real_escape_string($contz[5][$c]);
//echo $contz[0][$c];
curl_setopt ($ch, CURLOPT_URL, 'http://vivaprograms.com/'.$Post['category'].'/'.$Post['sid'].'-'.$Post['url'].'.html');
$data=curl_exec ($ch);
if(preg_match('$Author:.*?http://vivaprograms\.com/user/([a-zA-Z0-9-/]+)/.*?http://vivaprograms.com/([0-9]+/[0-9]+/[0-9]+)/.*?<div id="news-id-[0-9]+" style="display:inline;">(.*?)</div> <br /> <center>$is',$data,$dataz))
{
$Post['author']=mysql_real_escape_string($dataz[1]);
$Post['postdate']=str_replace('/','-',$dataz[2]).' '.rand(10,24).':'.rand(10,60).':'.rand(10,60);
$Post['content']=mysql_real_escape_string($dataz[3]);
}else echo 'FUAUUU';
//mysql_query("INSERT INTO posts VALUES(NULL,2,'{$Post['sid']}','{$Post['category']}','{$Post['title']}','{$Post['url']}','".rand(100,400)."',NOW(),'{$Post['postdate']}','{$Post['smaldesc']}','{$Post['content']}','{$Post['author']}');");
if(mysql_errno())echo mysql_error();
echo "Page $pg : $total : $c ,{$Post['category']} title {$Post['title']}\n";
//break;
}

//break;
}
curl_close($ch);
?>

Uite un exemplu de la crawlerele scriptwarez.net

Edited by FarSe
Link to comment
Share on other sites

clawler = tarator

Este cum ii spune si numele ceva ce sa taraste. Are scopul de a se mista pe pagini web, furnizand detalii despre acestea.

Crawlerele sunt folosite de site-turile de cautare pentru a indexa pagini web sau de boti, cu scopul de a obtine continut din pagini web.

Practic un crawler se taraste pe pagini web, cautand/scanand continutul.

De aici deriva mai multe clase de crawlere cu diferite comportamente.

Cele care urmaresc continutul folosite de exemplu ca sa obtii toate bancurile de pe un site de bancuri (fara sa le copii manual).

Cele Pentru cautare si indexare: care urmaresc elemente importante din site (titlu, h1, strong) si urmaresc linkurile(le pot accesa creeand un site-map) (ex: crawlerele GOOGLE).

etc.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...