php使用QueryList轻松采集js动态渲染页面方法
这篇文章介绍了如何使用QueryList工具轻松采集JS动态渲染页面的相关知识点,特别适合对此有兴趣的朋友学习。
一、安装所需工具
需要通过Composer安装QueryList。在终端输入命令:poser require jaeger/querylist,即可轻松安装。还需要安装PhantomJS插件,命令为:poser require jaeger/querylist-phantomjs。还需从PhantomJS官网下载对应平台的PhantomJS二进制文件。
二、插件API介绍
QueryList提供了browser($url,$debug = false,$mandOpt = [])方法,通过浏览器打开连接,为采集JS动态渲染页面提供了便利。
三、以采集「今日头条」手机版为例
「今日头条」手机版基于React框架,内容是纯动态渲染出来的。这里以狼蚁网站SEO优化为例,演示QueryList的PhantomJs插件用法。
需要使用QueryList实例,并设置PhantomJS二进制文件路径。例如:
use QL\QueryList;
use QL\Ext\PhantomJs;
$ql = QueryList::getInstance();
$ql->use(PhantomJs::class,'/usr/local/bin/phantomjs');
接下来,通过浏览器打开今日头条的URL,获取动态渲染的HTML,例如:
$html = $ql->browser('
print_r($html);
还可以获取所有p标签文本内容:
$data = $ql->browser('
print_r($data->all());
输出将会是类似以下的内容:
Array(
[0] => 自拍模式开启!国庆假期我和国旗合个影
[1] => 你旅途已开始 他们仍在自己的岗位上为你的假期保驾护航
[2] => 喜极而泣,都教授终于回到地球了!
...
)
网络世界:使用http代理与自定义请求
在深入网络世界的中,我们有时需要借助特定的工具来访问某些网站或执行特定的任务。其中,使用http代理是一种常见的策略,它可以帮助我们绕过地域限制或隐藏我们的真实IP地址。自定义请求则能让我们更精细地控制网络请求,满足特定的需求。
一、使用http代理
在访问某些网站时,我们可能需要通过特定的代理服务器来进行连接。这可以通过在请求中加入代理信息来实现。例如,使用PhantomJS时,我们可以通过以下方式设置http代理:
```bash
$ql->browser(' true, [
// 使用http代理
'--proxy' => '192.168.1.42:8080', '--proxy-type' => 'http'
])
```
通过设定'--proxy'和'--proxy-type',我们可以指定代理服务器的地址和类型。这样,当我们的请求通过PhantomJS发出时,就会先经过指定的代理服务器,再到达目标网站。这在需要绕过地域限制或保护隐私的情况下非常有用。
二、自定义复杂请求
除了使用代理,我们还可以根据需要自定义请求。例如,我们可以设置请求的方法、URL、超时时间、延迟等。以下是一个使用PhantomJS自定义请求的例子:
```php
$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){
$r->setMethod('GET');
$r->setUrl('
$r->setTimeout(10000); // 10 seconds
$r->setDelay(3); // 3 seconds
return $r;
})->find('p')->texts();
print_r($data->all());
```
在这个例子中,我们设置了一个GET请求,指定了URL、超时时间和延迟。然后,我们通过find方法查找页面中的段落元素,并获取其文本内容。我们将结果打印出来。
三、开启debug模式并从本地加载cookie文件
在进行网络请求时,有时我们需要加载本地的cookie文件,以便在请求中携带已存在的会话信息。PhantomJS也支持这个功能。以下是一个例子:
```php
$data = $ql->browser(function (\JonnyW\PhantomJs\Http\RequestInterface $r){
// ... (同上面自定义请求的设置) ...
}, true, [
'--cookies-file' => '/path/to/cookies.txt'
])->rules([
'title' => ['p','text'],
'link' => ['a','href']
])->query()->getData();
print_r($data->all());
```
在这个例子中,我们在请求设置中加入了'--cookies-file',指定了本地的cookie文件路径。这样,当请求发出时,就会携带该cookie文件中的会话信息。我们还使用了rules方法来指定需要提取的数据规则。通过query方法发送请求并获取数据。
通过以上的设置和自定义,我们可以灵活地控制网络请求,满足不同的需求。无论是使用http代理、自定义请求还是加载cookie文件,都可以帮助我们更好地网络世界。
编程语言
- php使用QueryList轻松采集js动态渲染页面方法
- PHP实现的封装验证码类详解
- SqlServer 索引自动优化工具
- javascript闭包的使用之按钮切换功能
- .net泛型通用函数的特殊问题的解决方法
- 使用nvm管理不同版本的node与npm的方法
- php采用session实现防止页面重复刷新
- 浅谈JavaScript超时调用和间歇调用
- 使用Vue.js和Element-UI做一个简单登录页面的实例
- JavaScript实现更改网页背景与字体颜色的方法
- Nginx+php配置文件及原理解析
- asp.net实现三层架构的例子
- 使用vue实现多规格选择实例(SKU)
- php ajax异步读取rss文档数据
- c#.net中const和readonly的区别
- 网页(aspx)与用户控件(ascx)交互逻辑处理实现