Fallstudie: Verwenden Sie PHPQuery, um 3000 Bilder von Tumblr zu crawlen
Auf Tumblr gibt es einige schöne Bilder. Wir können Tumblr-APIs verwenden, um Bilder zu suchen und herunterzuladen, dies erfordert jedoch normalerweise die Registrierung und die API-Schlüssel. Eine andere Möglichkeit besteht darin, die HTML-Webseiten zu crawlen und das DOM (Document Object Model) zu analysieren, wodurch wir die Bild-URLs und ihre Beschreibungen abrufen können.
Es gibt eine praktische Bibliothek namens PHPQuery. Es ermöglicht uns, PHP im JQuery-Stil so zu schreiben, wie wir JQuery schreiben, indem wir CSS-Selektoren verwenden. Es macht PHP leistungsfähig bei der Analyse des DOM beliebiger HTML-Seiten.
phpabfrage
Das Folgende ist ein Psudo-Code, der veranschaulicht, wie die HTML – Seiten analysiert und die Bilder abgerufen werden.
Mit PHPQuery wird es so viel einfacher, das DOM zu analysieren! Klicken Sie hier, um zu twittern
require('phpQuery.php');
require('app.php');
$ip = get_ip_address();
function grab($url, $lvl = 5) {
global $ip;
if ($lvl < = 0) {
return;
}
$doc = phpQuery::newDocumentFile($url);
foreach(pq('div.TumbPostPane') as $p) {
$img = pq($p)->find('img.PhotoPostMainPhoto')->attr('src');
$desc = htmlspecialchars(trim(pq($p)->find('div.MetaPanel')->html()));
$url = pq($p)->find('a')->attr('href');
$err = '';
if (UploadPic($img, $desc, $err, $ip)) { // find pictures and save locally
echo "OK = $err n";
} else {
echo str_replace("<br />", "n", "Error = $err n");
}
grab($url, $lvl - 1); // recursive download
}
}
grab("<a class="vglnk" target="_blank" href="https://uploadbeta.com" rel="nofollow"><span>https</span><span>://</span><span>uploadbeta</span><span>.</span><span>com</span></a>", 1);
Mit wenigen Modifikationen können Sie das Skript innerhalb weniger Minuten mehrere tausend Bilder crawlen lassen. Alle Bilder werden in lokalen Datenbanken auf dem VPS-Server gespeichert. Die Bilder sind zu sehen unter: uploadbeta.com
Es ist besser, ein Zeitintervall zwischen dem Seiten-Crawling festzulegen, da sonst die IP-Adresse blockiert werden kann.
Bildkriechen
PS, die Image-Upload-Website unterstützt einige APIs für verschiedene Zwecke, die der Fair-Use-Richtlinie unterliegen: https://uploadbeta.com/picture-gallery/faq.php#api
