php用QueryList异步爬取网页数据
环境要求
PHP >= 7.0
如果你的PHP版本还停留在PHP5,或者不会使用Composer,你可以选择使用QueryList3,QueryList3支持php5.3以及手动安装。 QueryList3 档:http://v3.querylist.cc
更换国内镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
安装
通过Composer安装:
composer require jaeger/querylist:~V4
使用
元素操作
1.采集「昵图网」所有图片地址
QueryList::get('http://www.nipic.com')->find('img')->attrs('src');
2.采集百度搜索结果
$ql = QueryList::get('http://www.baidu.com/s?wd=QueryList');$ql->find('title')->text(); // 获取网站标题
$ql->find('meta[name=keywords]')->content; // 获取网站头部关键词$ql->find('h3>a')->texts(); //获取搜索结果标题列表
$ql->find('h3>a')->attrs('href'); //获取搜索结果链接列表$ql->find('img')->src; //获取第一张图片的链接地址
$ql->find('img:eq(1)')->src; //获取第二张图片的链接地址
$ql->find('img')->eq(2)->src; //获取第三张图片的链接地址
// 遍历所有图片
$ql->find('img')->map(function($img){echo $img->alt; //打印图片的alt属性
});
3.更多用法
$ql->find('#head')->append('<div>追加内容</div>')->find('div')->htmls();
$ql->find('.two')->children('img')->attrs('alt'); //获取class为two元素下的所有img孩子节点
//遍历class为two元素下的所有孩子节点
$data = $ql->find('.two')->children()->map(function ($item){//用is判断节点类型if($item->is('a')){return $item->text();}elseif($item->is('img')){return $item->alt;}
});$ql->find('a')->attr('href', 'newVal')->removeClass('className')->html('newHtml')->...
$ql->find('div > p')->add('div > ul')->filter(':has(a)')->find('p:first')->nextAll()->andSelf()->...
$ql->find('div.old')->replaceWith( $ql->find('div.new')->clone())->appendTo('.trash')->prepend('Deleted')->...
4.列表采集
$data = QueryList::get('http://www.baidu.com/s?wd=QueryList')// 设置采集规则->rules([ 'title'=>array('h3','text'),'link'=>array('h3>a','href')])->query()->getData();print_r($data->all());
//采集结果显示
Array
([0] => Array([title] => QueryList|基于phpQuery的无比强大的PHP采集工具[link] => http://www.baidu.com/link?url=GU_YbDT2IHk4ns1tjG2I8_vjmH0SCJEAPuuZN)[1] => Array([title] => PHP 用QueryList抓取网页内容 - wb145230 - 博客园[link] => http://www.baidu.com/link?url=zn0DXBnrvIF2ibRVW34KcRVFG1_bCdZvqvwIhUqiXaS)[2] => Array([title] => 介绍- QueryList指导文档[link] => http://www.baidu.com/link?url=pSypvMovqS4v2sWeQo5fDBJ4EoYhXYi0Lxx)//...
)
5.编码转换
// 输出编码:UTF-8,输入编码:GB2312
QueryList::get('https://top.etao.com')->encoding('UTF-8','GB2312')->find('a')->texts();// 输出编码:UTF-8,输入编码:自动识别
QueryList::get('https://top.etao.com')->encoding('UTF-8')->find('a')->texts();
6.HTTP网络操作
//采集新浪微博需要登录才能访问的页面
$ql = QueryList::get('http://weibo.com','param1=testvalue & params2=somevalue',['headers' => [//填写从浏览器获取到的cookie'Cookie' => 'SINAGLOBAL=546064; wb_cmtLike_2112031=1; wvr=6;....']
]);
//echo $ql->getHtml();
echo $ql->find('title')->text();
//输出: 我的首页 微博-随时随地发现新鲜事
7.模拟登录
// 用post登录
$ql = QueryList::post('http://xxxx.com/login',['username' => 'admin','password' => '123456'
])->get('http://xxx.com/admin');
//采集需要登录才能访问的页面
$ql->get('http://xxx.com/admin/page');
//echo $ql->getHtml();//from表单操作
// 获取QueryList实例
$ql = QueryList::getInstance();
//获取到登录表单
$form = $ql->get('https://github.com/login')->find('form');//填写GitHub用户名和密码
$form->find('input[name=login]')->val('your github username or email');
$form->find('input[name=password]')->val('your github password');//序列化表单数据
$fromData = $form->serializeArray();
$postData = [];
foreach ($fromData as $item) {$postData[$item['name']] = $item['value'];
}//提交登录表单
$actionUrl = 'https://github.com'.$form->attr('action');
$ql->post($actionUrl,$postData);
//判断登录是否成功
// echo $ql->getHtml();
$userName = $ql->find('.header-nav-current-user>.css-truncate-target')->text();
if($userName)
{echo '登录成功!欢迎你:'.$userName;
}else{echo '登录失败!';
}
其他更详细参照链接点击
php用QueryList异步爬取网页数据相关推荐
- QueryList异步抓取网页数据
环境要求: php7及以上 phantomjs引擎 下载地址 QueryList4.0 核心思想: 根据抓取对象网页的布局,编写相应的规则,规则语法参考jquery即可. 抓取示例: 京东商城产品列表 ...
- Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索
Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索 一.资源 为什么接下来的代码中要使用el.getElementsByTa ...
- python爬取网页公开数据_如何用Python爬取网页数据
使用Python爬取网页数据的方法: 一.利用webbrowser.open()打开一个网站:>>> import webbrowser >>> webbrowse ...
- 编程python爬取网页数据教程_实例讲解Python爬取网页数据
一.利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('http://i.f ...
- python爬取网页数据(例如淘宝)
爬取网页数据(例如淘宝) 现在淘宝商品页面不能直接爬取,需要登录,所以我们得实现模拟登录,如下即可实现模拟登录: import requests cookie_str = r'cna=QsJDGKPt ...
- python爬虫教程:实例讲解Python爬取网页数据
这篇文章给大家通过实例讲解了Python爬取网页数据的步骤以及操作过程,有兴趣的朋友跟着学习下吧. 一.利用webbrowser.open()打开一个网站: >>> import w ...
- 如何使用python实现简单爬取网页数据并导入MySQL中的数据库
前言:要使用 Python 爬取网页数据并将数据导入 MySQL 数据库,您需要使用 Requests 库进行网页抓取,使用 BeautifulSoup 库对抓取到的 HTML 进行解析,并使用 Py ...
- Python小姿势 - Python爬取网页数据
Python爬取网页数据 爬取网页数据是一个比较常见的Python应用场景,有很多第三方库可以帮助我们完成这个任务.这里我们介绍一下urllib库中的一个常用方法:urllib.request.url ...
- python初学-爬取网页数据
python初学-爬取网页数据 1,获取网页源代码 import urllib url = 'http://www.163.com'wp = urllib.urlopen(url) file_cont ...
最新文章
- python多条件排序
- 051_元素之间空白间隙解决方案
- Python爬虫解析html:lxml的HtmlElement对象获取和设置inner html
- java类与对象 演练 查找并修改姓名
- iOS使用新浪微博、微信官方SDK分享内容
- 网页中Flash播放器常用参数设置(转)
- Teamcenter 2007之错误信息提示
- random number in groovy
- 定时任务cron表达式
- 嵌入式C语言编程中经验教训总结(一) 详解const、static和volatile
- Task Scheduler 对win7中任务计划的编程
- js/javaScript通过setTimeout做动画和需要注意的点
- 【图像分割】基于FCM+KFCM MRI图像分割matlab源码含GUI
- 互联互通PSAM卡发卡注意事项与要点总结
- 微软Office Powerpoint双击打不开后的修复办法
- Unity快速实现回合制游戏
- Tofu Icecream and Tai-chi man
- 数据库二级复习笔记(1)选择题
- C语言基础:if语句
- 目标检测框架网络模型分析(二 双塔奇兵)