Crawler全名是DomCrawler,是Symfony框架的组件。令人发指的是DomCrawler的没有中文文档,Symfony也没有翻译该部分,所以使用DomCrawler开发只能一点一点摸索,现将使用过程中的经验总结。

首先是安装
composer require symfony/dom-crawler composer require symfony/css-selector
css-seelctor 是 css选择器,用css选择节点时一些函数会用到
手册里面使用的例子是
use Symfony\Component\DomCrawler\Crawler;
$html = <<<‘HTML‘
Hello World!
Hello Crawler!
HTML;
$crawler = new Crawler($html);
foreach ($crawler as $domElement)
{
var_dump($domElement->nodeName);
}
打印的结果是
string ‘html‘ (length=4)
因为这段html代码的nodeName就是html,英语不好,开始使用的时候还以为程序错了。。。
实际使用过程,如果new Crawler($html)会出现乱码问题,应该是与页面编码有关,所以可以采用下面的方式,先初始化crawler,然后添加node
$crawler = new Crawler(); $crawler->addHtmlContent($html);
addHtmlContent的第二个参数是charset,默认是utf-8。
其他例子可以参考官方文档,http://symfony.com/doc/current/components/dom_crawler.html
记录一下工作中一点点试出来的用法
filterXPath(string $xpath) 方法,按照手册上的说法,该方法的参数是$xpath,经常用的是p,div等块。
echo $crawler->filterXPath(‘//body/p‘)->text(); echo $crawler->filterXPath(‘//body/p‘)->last()->text();
输出是第一个和下一个p标签块的文本
var_dump($crawler->filterXPath(‘//body‘)->html());
输出body内的html
foreach ($crawler->filterXPath(‘//body/p‘) as $i => $node) {
$c = new Crawler($node);
echo $c->filter(‘p‘)->text();
}
filterXPath获得的是DOMElement块的数组,每个DOMElement块可以使用新的crawler对象继续解析
$nodeValues =
$crawler->filterXPath(‘//body/p‘)->each(function (Crawler $node, $i) {
return $node->text();
});
crawler提供了each循环,使用闭包函数简化代码,不过注意的是,这种写法$nodeValues得到的是数组,需要进一步处理。
其他用法
echo $crawler->filterXPath(‘//body/p‘)->attr(‘class‘);
可以获得第一个p标签对应class属性的值“message”
$crawler->filterXPath(‘//div[@class="样式"]‘)->filter(‘a‘)->attr(‘href‘); $crawler->filterXPath(‘//div[@class="样式"]‘)->filter(‘a>img‘)->extract(array(‘alt‘, ‘href‘))
以上是获得标签属性的一些方法
filter和filterXPath不同,手册上写的是css选择器,不太明白,我理解是div这种XPath节点包含的元素,具体情况还需要在实际开发中去尝试。
总的来说感觉DomCrawler要比simple html dom好用一些,可能是我用的比较浅显。
上述只是Crawler的基本功能,更过用法请查阅symfony手册关于Crawler部分的函数
http://api.symfony.com/3.2/Symfony/Component/DomCrawler/Crawler.html
Crawler主要问题还是示例太少,函数手册里面没有使用实例,只能在实际使用中去摸索。。。。
symfony关于DomCrawler的文档,里面有少数例子
http://symfony.com/doc/current/components/dom_crawler.html
以上所述是小编给大家介绍的在laravel中使用Symfony的Crawler组件分析HTML,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# laravel
# 组件
# laravel+vue组合的项目中引入ueditor方式(打包成组件形式)
# Laravel框架中扩展函数、扩展自定义类的方法
# PHP框架Laravel插件Pagination实现自定义分页
# laravel通过创建自定义artisan make命令来新建类文件详解
# Laravel中重写资源路由自定义URL的实现方法
# Laravel Validator自定义错误返回提示消息并在前端展示
# Laravel认证原理以及完全自定义认证详解
# 关于Laravel-admin的基础用法总结和自定义model详解
# Laravel5.5以下版本中如何自定义日志行为详解
# laravel框架学习笔记之组件化开发实现方法
# 的是
# 第一个
# 文档
# 中去
# 小编
# 选择器
# 在此
# 不太
# 在实际
# 令人发指
# 这段
# 错了
# 我用
# 第二个
# 给大家
# 要比
# 还需要
# 可以使用
# 英语
# 太少
相关文章:
定制建站是什么?如何实现个性化需求?
如何快速搭建高效服务器建站系统?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
常州企业网站制作公司,全国继续教育网怎么登录?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
高性价比服务器租赁——企业级配置与24小时运维服务
常州企业建站如何选择最佳模板?
如何快速生成可下载的建站源码工具?
寿县云建站:智能SEO优化与多行业模板快速上线指南
长沙企业网站制作哪家好,长沙水业集团官方网站?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
香港服务器租用每月最低只需15元?
如何在香港免费服务器上快速搭建网站?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
网站制作需要会哪些技术,建立一个网站要花费多少?
建站之星在线版空间:自助建站+智能模板一键生成方案
Android自定义listview布局实现上拉加载下拉刷新功能
如何在阿里云高效完成企业建站全流程?
C#怎么创建控制台应用 C# Console App项目创建方法
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
建站之星价格显示格式升级,你的预算足够吗?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
,怎么在广州志愿者网站注册?
如何通过VPS建站实现广告与增值服务盈利?
智能起名网站制作软件有哪些,制作logo的软件?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何在IIS中新建站点并解决端口绑定冲突?
历史网站制作软件,华为如何找回被删除的网站?
如何通过FTP服务器快速搭建网站?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
如何用景安虚拟主机手机版绑定域名建站?
如何在搬瓦工VPS快速搭建网站?
如何通过山东自助建站平台快速注册域名?
如何高效生成建站之星成品网站源码?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
活动邀请函制作网站有哪些,活动邀请函文案?
如何高效配置香港服务器实现快速建站?
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何通过虚拟主机快速完成网站搭建?
建站主机是否属于云主机类型?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
高防服务器:AI智能防御DDoS攻击与数据安全保障
七夕网站制作视频,七夕大促活动怎么报名?
如何在云指建站中生成FTP站点?
如何选择美橙互联多站合一建站方案?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
*请认真填写需求信息,我们会在24小时内与您取得联系。