Login 模拟登陆扩展


Login扩展,可以实现模拟登陆然后采集。

安装:

  1. composer require jaeger/querylist-ext-login

GIT地址:

  1. https://github.com/jae-jae/QueryList-Ext-Login.git

依赖(通过Composer安装的请忽略)

Login扩展依赖Request扩展Request扩展安装教程:http://doc.querylist.cc/site/index/doc/21

用法

  1. $login = QueryList::run('Login',[
  2. 'target' => '登陆表单提交的目标地址',
  3. 'method' => 'post',
  4. //登陆表单需要提交的数据
  5. 'params' => ['username'=>'admin','password'=>'admin'],
  6. 'cookiePath' => 'cookie保存路径'
  7. //更多参数查看Request扩展
  8. ]);
  9. //登陆成功后,就可以调用get和post两个方法来抓取登陆后才能抓的页面
  10. $ql = $login->get('页面地址'[,'处理页面的回调函数','传给回调的参数']);
  11. $ql = $login->post('页面地址','post提交的数据数组'[,'处理页面的回调函数','传给回调的参数']);
  12. $data = $ql->setQuery(...)->data;

返回值为Login插件对象,这个对象的get和post两个方法的返回值为设置好了html属性的QueryList对象,然后应该调用QueryList的setQuery方法设置采集规则。

  1. //模拟登陆
  2. $login = QueryList::run('Login',[
  3. 'target' => 'http://xxx.com/login',
  4. 'method' => 'post',
  5. 'params' => ['username'=>'admin','password'=>'admin'],
  6. 'cookiePath' => './cookie123.txt'
  7. ]);
  8. $data = $login->post('http://xxx.com/admin',['key'=>'value'],function($content,$args){
  9. //这里可以对页面做一些格外的处理
  10. //替换页面的所有的yyy为xxx
  11. $content = str_replace('yyy',$args,$content);
  12. return $content;
  13. },'xxx')->setQuery(['title'=>['h1','text']])->data;