QueryList verwendet jQuery zur Sammlung und verfügt über eine Fülle von Plug-Ins.
Im Folgenden wird gezeigt, wie QueryList das PhantomJS-Plug-in verwendet, um von JS dynamisch erstellte Seiteninhalte zu erfassen.
Empfohlen: „PHP-Tutorial“
Installation
Verwenden Sie Composer zur Installation:
QueryList installieren
composer require jaeger/querylist GitHub: https://github.com/jae-jae/QueryList
PhantomJS-Plug-in installieren
composer require jaeger/querylist-phantomjs GitHub: https://github.com/jae-jae/QueryList-PhantomJS
PhantomJS-Binärdatei herunterladen
Offizielle PhantomJS-Website : http://phantomjs.org, laden Sie die PhantomJS-Binärdatei für die entsprechende Plattform herunter.
Plug-in-API
QueryList-Browser($url,$debug = false,$commandOpt = []): Verwenden Sie den Browser, um die Verbindung zu öffnen
Verwenden Sie
Nehmen Sie die mobile Version von „Today's Toutiao“ als Beispiel. Die mobile Version von „Today's Toutiao“ basiert auf dem React-Framework und der Inhalt ist rein dynamisch gerendert.
Im Folgenden wird die Verwendung des PhantomJs-Plug-Ins für QueryList demonstriert:
Installieren Sie das Plug-In
use QL\QueryList; use QL\Ext\PhantomJs; $ql = QueryList::getInstance(); // 安装时需要设置PhantomJS二进制文件路径 $ql->use(PhantomJs::class,'/usr/local/bin/phantomjs'); //or Custom function name $ql->use(PhantomJs::class,'/usr/local/bin/phantomjs','browser');
Beispiel-1
Dynamisch gerendertes HTML abrufen:
$html = $ql->browser('https://m.toutiao.com')->getHtml(); print_r($html);
Alle p-Tag-Textinhalte abrufen:
$data = $ql->browser('https://m.toutiao.com')->find('p')->texts(); print_r($data->all());
Ausgabe:
Array ( [0] => 自拍模式开启!国庆假期我和国旗合个影 [1] => 你旅途已开始 他们仍在自己的岗位上为你的假期保驾护航 [2] => 喜极而泣,都教授终于回到地球了! //.... )
HTTP-Proxy verwenden:
// 更多选项可以查看文档: http://phantomjs.org/api/command-line.html $ql->browser('https://m.toutiao.com',true,[ // 使用http代理 '--proxy' => '192.168.1.42:8080', '--proxy-type' => 'http' ])
Beispiel 2
Anpassen einer komplexen Anfrage:
$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){ $r->setMethod('GET'); $r->setUrl('https://m.toutiao.com'); $r->setTimeout(10000); // 10 seconds $r->setDelay(3); // 3 seconds return $r; })->find('p')->texts(); print_r($data->all());
Debug-Modus aktivieren und Cookie-Dateien lokal laden:
$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){ $r->setMethod('GET'); $r->setUrl('https://m.toutiao.com'); $r->setTimeout(10000); // 10 seconds $r->setDelay(3); // 3 seconds return $r; },true,[ '--cookies-file' => '/path/to/cookies.txt' ])->rules([ 'title' => ['p','text'], 'link' => ['a','href'] ])->query()->getData(); print_r($data->all());
Das obige ist der detaillierte Inhalt vonPHP verwendet QueryList, um auf einfache Weise dynamisch gerenderte JavaScript-Seiten zu sammeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!