>  기사  >  백엔드 개발  >  PHPQuery를 사용하여 PHP에서 웹페이지를 크롤링하는 방법

PHPQuery를 사용하여 PHP에서 웹페이지를 크롤링하는 방법

WBOY
WBOY원래의
2023-06-27 15:36:251972검색

오늘날의 정보 폭발 시대에 웹 크롤러는 인터넷 분야에서 매우 일반적인 기술적 방법이 되었습니다. 인터넷 개발에서 널리 사용되는 언어 중 하나인 PHP에는 웹 크롤링을 구현하는 다양한 방법이 있습니다. 그 중 PHPQuery는 웹 크롤링, 데이터 추출 및 기타 작업을 빠르고 쉽게 구현할 수 있는 매우 실용적인 PHP 라이브러리입니다. 이 기사에서는 독자가 이 기술을 더 잘 익힐 수 있도록 PHPQuery의 사용 및 응용 사례를 소개합니다.

1. PHPQuery 소개

PHPQuery는 jQuery 구문을 기반으로 하며 PHP 개발자가 CSS 선택기를 사용하여 HTML 및 XML 문서를 조작할 수 있도록 하는 오픈 소스 PHP 클래스 라이브러리입니다. 요소 가져오기, 순회, 요소 속성 수정, 요소 추가, 삭제, 복사 등을 수행합니다. PHPQuery 라이브러리를 사용하려면 외부 종속성이나 확장이 필요하지 않습니다. 웹 페이지 크롤링 및 기타 작업을 완료하려면 Core API만 사용하면 됩니다.

2. PHPQuery 설치

PHPQuery 최신 버전은 GitHub에서 다운로드할 수 있습니다. PHPQuery를 설치하려면 zip 파일을 다운로드하여 프로젝트 폴더에 추출하면 됩니다. 샘플 코드:

require_once 'phpquery/phpQuery/phpQuery.php';

3. PHPQuery 사용법

1. HTML 문서 로드

phpQuery::newDocumentHTML() 메서드를 사용하여 HTML 문서를 phpQuery 개체에 로드하고 두 번째 매개 변수를 전달하여 구문 분석을 지정할 수 있습니다. 문서의 문자 인코딩입니다.

$html = '<html><head><title>PHPQuery Test</title></head><body><h1>Hello PHPQuery!</h1></body></html>';
$doc = phpQuery::newDocumentHTML($html, 'utf-8');

2. CSS 선택기를 사용하여 요소 가져오기

CSS 선택기를 사용하면 웹 페이지의 요구 사항을 충족하는 모든 요소를 ​​가져오고 phpQuery 개체에서 편집할 수 있습니다.

//获取HTML文档中的h1元素
$h1 = $doc->find('h1');

3. 요소 속성 가져오기 및 수정

phpQuery는 요소 속성을 가져오고 제거하는 attr() 및 RemoveAttr() 메서드를 제공하며, 요소 속성을 추가하고 수정하는 addAttr() 및 attr() 메서드 사용도 지원합니다. .

//获取元素的title属性
$title = $h1->attr('title');
//设置元素的title属性
$h1->attr('title', 'PHPQuery Test');
//移除元素的title属性
$h1->removeAttr('title');

4. 요소 탐색 및 복사

phpQuery는 일치하는 요소를 탐색하는 Each() 메소드와 요소를 복사하는 clone() 메소드도 제공합니다.

//遍历所有h5元素
$h5 = $doc->find('h5');
$h5->each(function($index, $element) {
    echo $element->tagName . '<br>';
});
//复制元素
$h6 = $h5->clone();

5. 웹 크롤링 예시

위의 방법을 사용하면 웹 크롤링을 쉽게 구현할 수 있습니다. 예를 들어 Baidu 홈페이지의 로고 이미지를 크롤링하려고 합니다. 다시 find() 메소드를 사용하여 로고 이미지 요소를 얻을 수 있고, attr() 메소드를 사용하여 이미지의 링크 주소를 얻은 다음, 마지막으로 file_gets_content() 함수를 사용하여 이미지를 다운로드할 수 있습니다. 구체적인 코드는 다음과 같습니다.

//载入百度首页
$html = file_get_contents('https://www.baidu.com');
$doc = phpQuery::newDocumentHTML($html);
//获取百度首页Logo图片链接地址
$img_url = $doc->find('#lg img')->attr('src');
//通过file_get_contents()函数获取图片内容并保存到本地
$img_content = file_get_contents($img_url);
file_put_contents('baidu_logo.jpeg', $img_content);

4. 결론

PHPQuery는 웹 크롤링, 데이터 추출 및 기타 작업에 큰 도움을 줄 수 있는 편리하고 빠르며 강력한 PHP 클래스 라이브러리입니다. 위 내용은 PHPQuery에 대한 간략한 소개일 뿐입니다. 독자는 보다 심층적인 연구와 실습을 통해 이 기술을 더 잘 익힐 수 있습니다. 동시에 웹페이지를 크롤링할 때 불법 크롤링이나 부적절한 사용으로 인해 발생하는 위험과 법적 책임을 피하기 위해 웹사이트의 저작권과 크롤링 규칙을 존중해야 합니다.

위 내용은 PHPQuery를 사용하여 PHP에서 웹페이지를 크롤링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.