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

Wie verwendet PHP QueryList, um auf einfache Weise dynamisch gerenderte js-Seiten zu sammeln?

青灯夜游
青灯夜游Original
2018-09-10 17:31:193617Durchsuche

In diesem Kapitel erfahren Sie, wie PHP QueryList verwenden kann, um js dynamische Rendering-Seiten zu sammeln. Ich hoffe, dass es für Sie hilfreich ist.

QueryList verwendet jQuery zur Sammlung und verfügt über eine Fülle von Plug-Ins. Lassen Sie uns demonstrieren, dass QueryList das PhantomJS-Plug-in verwendet, um den von JS dynamisch erstellten Seiteninhalt zu erfassen.

1. Installation

Verwenden Sie Composer zur Installation:

1. Installieren Sie QueryList

composer require jaeger/querylist

GitHub : https://github.com/jae-jae/QueryList

2. Installieren Sie das PhantomJS-Plugin

composer require jaeger/querylist-phantomjs

GitHub: https://github .com/ jae-jae/QueryList-PhantomJS

2. Laden Sie die PhantomJS-Binärdatei herunter

Offizielle PhantomJS-Website:http:// phantomjs.org, laden Sie die PhantomJS-Binärdatei für die entsprechende Plattform herunter.

3. Plug-in-API

QueryList-Browser($url,$debug = false,$commandOpt = []): Browser verwenden , um Connect zu öffnen

4. 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. Der Inhalt wird rein dynamisch gerendert.

Das Folgende zeigt die Verwendung des PhantomJs-Plugins für QueryList:

1. 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');

2.Beispiel-1

Dynamisch gerendertes HTML erhalten:

$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'
])

3.Beispiel- 2

Passen Sie eine komplexe Anfrage an:

$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());

Aktivieren Sie den Debug-Modus und laden Sie die Cookie-Datei lokal:

$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 vonWie verwendet PHP QueryList, um auf einfache Weise dynamisch gerenderte js-Seiten zu sammeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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