PhantomJS插件爬取的相对路径请求会转成本地

php_赞
  • 4
新手上路,请多包涵

PhantomJS插件爬取的相对路径请求会转成本地

图片描述

如上图展示,绝对路径是可以成功渲染,但是相对路径就会变成本地
因为目标网站是经过JS加密的,无法看到

所以请教一下,如何设置不会变成本地,而是目标网址

$client = Client::getInstance(); 
// 安装时需要设置PhantomJS二进制文件路径
$client->getEngine()->setPath('/www/wwwroot/novel/phantomjs-2.1.1-linux-x86_64/bin/phantomjs');

$client->getEngine()->addOption('--load-images=true');
$client->getEngine()->addOption('--ignore-ssl-errors=true');
$client->getEngine()->addOption('--local-to-remote-url-access=true');

$request = $client->getMessageFactory()->createRequest();
$response = $client->getMessageFactory()->createResponse(); //设置请求方法
$request->setMethod('GET');
 //设置请求连接
$request->setHeaders([
    'User-Agent'=>'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Mobile Safari/537.36',
]);
$request->setUrl('https://xxxxx.xx/read/92689.html'); //发送请求获取响应
$client->send($request, $response);
var_dump($response);
//echo $response->getContent();
回复
阅读 2.1k
1 个回答
清莲
  • 19
✓ 已被采纳

QueryList-AbsoluteUrl 插件
转换URL相对路径到绝对路径.
GitHub:https://github.com/jae-jae/Qu...

普通调用方法会存在这个问题;
或者用:
自定义一个复杂的请求:

set_time_limit(0);
$ql = QueryList::getInstance();
// 安装时需要设置PhantomJS二进制文件路径
// $ql->use(PhantomJs::class,'/usr/local/bin/phantomjs');
// or Custom function name
$ql->use(PhantomJs::class,'D:\phantomjs2.1.1\bin\phantomjs.exe','browser');
$data = $ql->browser(function(\JonnyW\PhantomJs\Http\RequestInterface $r){
    $r->setMethod( 'GET');
    $r->setUrl('https://lnovel.cc/read/92689.html');
    $r->setTimeout(10000); // 10 seconds
    $r->setDelay(3); // 3 seconds
    return$r;
})->find('p')->texts();
print_r($data->all());
宣传栏