Einführung und Verwendung von Snoopy

WBOY
Freigeben: 2016-08-08 09:24:27
Original
1952 Leute haben es durchsucht

Snoopy ist eine php-Klasse, die zur Simulation der Funktionen des Browsers dient und Webinhalte abrufen und Formulare versenden kann. Für den korrekten Betrieb von Snoopy muss die PHP-Version Ihres Servers 4 sein oben. Und unterstützt PCRE (Perl-kompatible reguläre Ausdrücke), Basic LAMP Service Alle unterstützt. Die offizielle Download-Adresse der Snoopy-Klasse lautet: http://snoopy.sourceforge.net/1 Einige Funktionen von Snoopy:1.Inhalte von Webseiten abrufen abrufen2.Fangen Sie den Textinhalt der Webseite ab (Entfernen HTMLTag) fetchtext3.Webseiten-Links abrufen, Formular fetchlinks fetchform4.Proxy-Host unterstützen5.Basisbenutzernamen unterstützen /Passwortüberprüfung6.Support-Einstellungenuser_agent, referer(Quelle ), Cookies und Header-Inhalt (HeaderTeile)7.Unterstützt die Browserumleitung und kann die Umleitungstiefe steuern8.Kann die Links im Web Seite werden in hochwertige URL (Standard)9.Senden erweitert Daten und Rückgabewert erhalten10.Support-TrackingHTMLFramework 11.Unterstützt die Weitergabe von Cookies bei der Weiterleitung, erfordert php4 oder höher. Ja, da es so ist Eine php-Klasse, es besteht keine Notwendigkeit, die Unterstützung zu erweitern. Dies ist die beste Wahl, wenn der Server curl nicht unterstützt. 2. Klassenmethoden :fetch($URI) Dies ist für das Crawlen von Webseiten Methode, die für den Inhalt verwendet wird. Der Parameter $URI ist die URL-Adresse der gecrawlten Webseite. Die abgerufenen Ergebnisse werden in $this->results gespeichert. Wenn Sie einen Frame erfassen, verfolgt Snoopy jeden Frame, speichert ihn in einem Array und speichert ihn dann in $this-> . fetchtext($URI) Diese Methode ähnelt fetch() Der einzige Unterschied besteht darin Die Methode entfernt die HTML-Tags und andere irrelevante Daten und gibt nur den Textinhalt auf der Webseite zurück. fetchform($URI) Diese Methode ähnelt fetch() Der einzige Unterschied besteht darin Die Methode entfernt die HTML-Tags und andere irrelevante Daten und gibt nur den Formularinhalt (form) auf der Webseite zurück. fetchlinks($URI) Diese Methode ähnelt fetch() Der einzige Unterschied besteht darin Die Methode entfernt die HTML-Tags und andere irrelevante Daten und gibt nur den Link (link) auf der Webseite zurück. Standardmäßig werden relative Links automatisch vervollständigt und in eine vollständige URL umgewandelt. submit($URI,$formvars) Diese Methode sendet ein Bestätigungsformular an die durch $URL . $formvars ist ein Array, das Formularparameter speichert. submittext($URI,$formvars) Diese Methode ähnelt submit(), mit dem einzigen Unterschied Diese Methode entfernt die HTML-Tags und andere irrelevante Daten und gibt erst nach der Anmeldung den Textinhalt auf der Webseite zurück. submitlinks($URI) Diese Methode ähnelt submit(). Der einzige Unterschied besteht darin Die Methode entfernt die HTML-Tags und andere irrelevante Daten und gibt nur den Link (link) auf der Webseite zurück. Standardmäßig werden relative Links automatisch vervollständigt und in eine vollständige URL umgewandelt.3. Klassenattribute: (Der Standardwert steht in Klammern)$host Verbundener Host$port Verbundener Port$proxy_host Zu verwendender Proxy-Host, falls vorhanden $ Proxy-Port Der zu verwendende Proxy-Host-Port, falls vorhanden$agent Disguise (Snoopy v0.1)$ Referrer Referrer-Informationen, falls vorhanden$cookies Cookies, falls vorhanden$rawheaders Andere Header-Informationen , falls vorhanden$maxredirs Maximale Anzahl von Weiterleitungen, 0=Nicht zulässig (5)$offsiteok, ob Weiterleitungen außerhalb der Website zugelassen werden sollen oder nicht (true)$expandlinks Ob alle Links zu vollständigen Adressen vervollständigt werden sollen (true)$user Authentifizierungsbenutzername, wenn ja$pass Authentifizierungs-Benutzername, Wenn ja$accept http Typen akzeptieren (image/gif, image/x -xbitmap, image/jpeg, image/pjpeg, */*)$error Wo kann man einen Fehler melden, falls vorhanden$response_code Der vom Server zurückgegebene Antwortcode$headers Header-Informationen, die vom Server zurückgegeben wurden $ maxlength Maximal zurückgegebene Datenlänge$read_timeout Lesevorgang-Timeout ( erfordert PHP 4 Beta 4+) gesetzt auf 0 für kein Timeout $timed_out Wenn bei einem Lesevorgang eine Zeitüberschreitung auftritt, gibt diese Eigenschaft true zurück (erfordert PHP 4 Beta 4 +)$maxframes Maximale Anzahl von Frames, die verfolgt werden dürfen $status Der Status der erfassten http $temp_dir Temporäres Dateiverzeichnis, in das der Webserver schreiben kann (/tmp)$ curl_path cURL-Binärverzeichnis Verzeichnis , , wenn kein cURL-Binärverzeichnis vorhanden ist, wird auf false 4. Das Folgende ist die DemoKopiercodeinclude „Snoopy .class.php“;$ snoopy = neuer Snoopy;$snoopy->proxy_host = "www.phpoac.com";$snoopy-> Proxy_port = "8080";$ snoopy->agent = "(kompatibel; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";$snoopy->referer = "http://www.phpoac.com/"; $snoopy->cookies["SessionID"] = 238472834723489l;$snoopy->cookies["favoriteColor"] = "RED";$snoopy ->rawheaders["Pragma"] = "no-cache";$snoopy->maxredirs = 2; $snoopy->offsiteok = false;$snoopy->expandlinks = false;$snoopy->user = "joe";$snoopy- >pass = "bloe";if($snoopy->fetchtext("http://www.phpoac.com")){echo "

".htmlspecialchars($snoopy-&gt ;Ergebnisse)." 
n"
}
else
echo „error fetching document: „.$snoopy->error.“n“;snoopy SammlungphpoacBeispielCode kopieren//SammlungphpOpen Source Networkset_time_limit(0);require_once("Snoopy.class.php"); $snoopy=new Snoopy();//Im Forum anmelden$submit_url = "http://www.phpoac.com/bbs/ logging.php? action=login";$submit_vars["loginmode"] = "normal";$submit_vars["styleid"] = "1";$submit_vars[ "cookietime"] = "315360000";$submit_vars["loginfield"] = "username";$submit_vars["username"] = "***" ; //Ihr Benutzername$submit_vars["password"] = "*****" //Ihr Passwort$ submit_vars ["questionid"] = "0";$submit_vars["answer"] = "";$submit_vars["loginsubmit"] = "Senden ";$snoopy->submit($submit_url,$submit_vars);if ($snoopy->results){ //Verbindungsadresse abrufen$snoopy->fetchlinks("http://www.phpoac.com/bbs");$url=array();$url=$snoopy->results;//print_r($url);foreach ($url as $ key=>$value){//Trefferhttp://www.phpoac.com/bbs/forumdisplay.php?fid=156&sid= VfcqTR Die Adresse ist die Adresse des Forumabschnittsif(!preg_match("/^(http://www.phpoac.com/bbs/forumdisplay.php?fid=)[0 -9] *&sid=[a-zA-Z]{6}/i",$value)){unset($url[$key]);}}//print_r($url);//Holen Sie sich das Plattenarray $url, Schleife Zugriff, dies Holen Sie sich die Daten auf der ersten Seite des ersten Moduls unter $i=0;foreach ($url as $key=>$value) {if ($i>=1){//Grenzwerte testenbreak; }else{//Greifen Sie auf dieses Modul zu und extrahieren Sie die Linkadresse des Beitrags, die Sie benötigen um die Daten der Post-Paginierung zu extrahieren, und dann entsprechend den Paginierungsdaten, um Post-Daten zu extrahieren$snoopy=new Snoopy();$snoopy->fetchlinks($ value);$tie=array( );$tie[$i]=$snoopy->results;//print_r($tie); //Array konvertierenforeach ($tie[$i] as $key=>$value){//Übereinstimmungen http://www.phpoac.com/bbs/viewthread.php?tid=68127&extra=page=1&page=1&sid=iBLZfK if (!preg_match("/^(http://www .phpoac.com/bbs/viewthread.php?tid=)[0-9]*&extra=page=1&page=[0-9]*&sid=[a -zA-Z]{6}/i",$value )){unset($tie[$i][$key]);} }/ /print_r($tie[$i]);//Kategorie-Arrays, fügen Sie den Inhalt verschiedener Seiten desselben Beitrags ein ein Array$left= '';//Verbinden Sie die öffentliche Adresse auf der linken Seite$j=0;$ page=array();foreach ($tie[ $i] as $key=>$value){$left=substr($value, 0,52);$m=0;foreach ($tie[$i] as $pkey=>$pvalue){//Array neu organisierenif (substr($pvalue,0,52)==$left){$page[ $j][$m]=$pvalue; $m++;}}$j++;} //Duplikate entfernen//$page=array_unique($page);kann nur für eindimensionale Arrays verwendet werden$paget[0]=$page[0];$nums=count($page);für ($n=1;$n <$ nums;$n++){ $paget[$n]=array_diff($page[$n],$page[$n-1]); }//Ende des Entfernens doppelter Werte aus einem mehrdimensionalen Array//Entfernen leerer Werte aus einem Array unset($page); $page=array();//Redefinepagearray$page=array_filter($paget );//print_r($page);$u=0;$title=array();$content=array();$temp='';$tt=array();foreach ($page as $key= >$value) {//Peripherieschleife, für einen Beitragif (is_array($value)){foreach ($value as $k1=>$v1){//In-Page-Schleife, für N Seite$snoopy=new Snoopy();$snoopy->fetch($v1);$temp=$snoopy- >results;//Titel lesenif (!preg_match_all("/

(.*) < ;/h2>/i" ,$temp,$tt)){echo "no title";exit;}else{$title[$u]=$tt[1][1];}unset( $tt); //Inhalt lesenif (!preg_match_all("/
(.*)
/i",$temp,$tt)){print_r($tt); echo "no content1";exit;}else{foreach ($tt[1 ] als $c=> ;$c2){$content[$u].=$c2;}}}}else{//Den Seiteninhalt direkt abrufen$snoopy=new Snoopy( );$snoopy->fetch($value);$temp=$snoopy->results;// Titel lesenif (!preg_match_all("/

(.*)

/i",$temp,$tt)){echo „no title“;exit;}else{$ title[$u]= $tt[1][1];}unset($tt);//Inhalt lesen if (!preg_match_all("/
(.*)
/i",$temp, $tt)){echo „no content2“;exit;}else{ foreach ($tt[1] as $c=>$c2){$content[$u].=$c2;} }}$u++;}print_r($content); }$i++;}}else{echo "login fehlgeschlagen";exit;}?>

Das Obige stellt die Einführung und Verwendung von Snoopy vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage