이 글은 주로 Laravel에서 HTML을 분석하기 위해 Symfony의 Crawler 컴포넌트를 사용하는 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
Crawler의 전체 이름은 Symfony 프레임워크의 컴포넌트인 DomCrawler입니다. 특이한 점은 DomCrawler에는 중국어 문서가 없고 Symfony에서는 이 부분을 번역하지 않았기 때문에 DomCrawler를 사용한 개발은 조금씩만 탐색할 수 있다는 것입니다. 이제 사용 과정에서의 경험을 요약하겠습니다.
먼저 CSS 선택기인
composer require symfony/dom-crawler composer require symfony/css-selector
css-seelctor를 설치하세요. 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이고, 제 영어 실력도 좋지 않아서 프로그램을 처음 사용할 때부터 프로그램이 잘못된 줄 알았습니다. . .
실제 사용 과정에서 새로운 크롤러($html)에 문자가 깨져 있는 경우 페이지 인코딩과 관련이 있어야 하므로 다음 방법을 사용하여 크롤러를 먼저 초기화한 후 node의 두 번째 노드를 추가할 수 있습니다
$crawler = new Crawler(); $crawler->addHtmlContent($html);
addHtmlContent 매개변수는 charset이고 기본값은 utf-8입니다.
다른 예시는 공식문서인 http://symfony.com/doc/current/comComponents/dom_crawler.html
직장에서 조금 사용해본 사용법을 기록해두세요
filterXPath(string $ xpath) 메소드, 매뉴얼을 따른다. 위에서 설명한 것처럼 이 메소드의 매개변수는 $xpath이고, p, p 등의 블록이 자주 사용된다. 필터의 출력은 새로운 크롤러 객체를 사용하여 구문 분석을 계속합니다
echo $crawler->filterXPath(‘//body/p‘)->text(); echo $crawler->filterXPath(‘//body/p‘)->last()->text();
기타 사용법
var_dump($crawler->filterXPath(‘//body‘)->html());첫 번째 p 태그에 해당하는 클래스 속성의 "message" 값을 얻을 수 있습니다
foreach ($crawler->filterXPath(‘//body/p‘) as $i => $node) { $c = new Crawler($node); echo $c->filter(‘p‘)->text(); }위는 태그 속성을 얻는 몇 가지 방법입니다 filter와 filterXPath는 다릅니다. 매뉴얼에는 css selector가 나와 있는데, p와 같은 XPath 노드에 포함된 요소인 것으로 알고 있습니다. 실제 개발에서는 이를 시도해야 합니다.
일반적으로 DomCrawler는 단순한 HTML DOM보다 사용하기 쉽다고 생각합니다. 아마도 더 쉽게 사용하기 때문일 것입니다. 위 내용은 Crawler의 기본 기능일 뿐입니다. 자세한 사용법은 Symfony 매뉴얼의 Crawler 부분에 있는 기능을 참조하세요
http://api.symfony.com/3.2/Symfony/Component/DomCrawler/Crawler .html
Crawler의 가장 큰 문제점은 여전히 예제가 너무 적고, 기능 매뉴얼에 사용법 예제가 없어 실제 사용에서만 살펴볼 수 있다는 것입니다. . . .
몇 가지 예가 있는 DomCrawler에 대한 Symfony의 문서
http://symfony.com/doc/current/comComponents/dom_crawler.html
위 내용은 Crawler 구성 요소를 사용하여 laravel에서 HTML 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!