Heim  >  Artikel  >  Backend-Entwicklung  >  PHP verwendet QueryList, um auf einfache Weise dynamisch gerenderte JavaScript-Seiten zu sammeln

PHP verwendet QueryList, um auf einfache Weise dynamisch gerenderte JavaScript-Seiten zu sammeln

藏色散人
藏色散人nach vorne
2019-10-15 14:25:393016Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen