美工统筹SEO,为企业电子商务营销助力!
在laravel中操纵Symfony的Crawler组件阐发HTML
一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-25 14:41:32 阅读数: 126
Crawler全名是DomCrawler,是Symfony框架的组件。使人发指的是DomCrawler的不中文文档,Symfony也不翻译该局部,以是操纵DomCrawler开辟只能一点一点试探,现将操纵进程中的经历总结。
起首是装置
composer require symfony/dom-crawler composer require symfony/css-selector
css-seelctor 是 css挑选器,用css挑选节点时一些函数会用到
手册外面操纵的例子是
use SymfonyComponentDomCrawlerCrawler; $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,但愿对大师有所赞助,若是大师有任何疑难请给我留言,小编会实时答复大师的。在此也很是感激大师对网页设想网站的撑持!