인터넷의 지속적인 발전으로 정보에 대한 접근이 점점 더 편리해졌습니다. 그러나, 그 방대한 양의 정보는 우리에게 많은 고민을 안겨주기도 합니다. 우리가 필요로 하는 정보를 어떻게 효율적으로 얻는가는 매우 중요한 과제가 되었습니다. 정보 수집을 자동화하는 과정에서 웹 크롤러가 널리 사용됩니다.
웹 크롤러는 인터넷에서 자동으로 정보를 얻는 프로그램으로 검색 엔진, 데이터 마이닝, 상품 가격 추적 등의 작업에 자주 사용됩니다. 웹 크롤러는 지정된 웹 사이트나 웹 페이지에 자동으로 액세스한 다음 HTML 또는 XML 데이터를 구문 분석하여 필요한 정보를 얻습니다.
오늘 이 글에서는 PHP 언어를 사용하여 간단한 웹 크롤러를 만드는 방법을 소개하겠습니다. 시작하기 전에, PHP 언어에 대한 기본 지식과 웹 개발의 몇 가지 기본 개념을 이해해야 합니다.
1. HTML 페이지 가져오기
웹 크롤러의 첫 번째 단계는 HTML 페이지를 가져오는 것입니다. 이 단계는 PHP의 내장 함수를 사용하여 수행할 수 있습니다. 예를 들어 file_get_contents 함수를 사용하여 URL 주소의 HTML 페이지를 가져와서 변수에 저장할 수 있습니다. 코드는 다음과 같습니다.
$url = "https://www.example.com/"; $html = file_get_contents($url);
위 코드에서는 대상 URL을 저장하기 위해 $url 변수를 정의합니다. 주소를 입력한 다음 file_get_contents 함수를 사용하여 URL 주소의 HTML 페이지를 가져와 $html 변수에 저장합니다.
2. HTML 페이지 구문 분석
HTML 페이지를 얻은 후 여기에서 필요한 정보를 추출해야 합니다. HTML 페이지는 일반적으로 태그와 태그 속성으로 구성됩니다. 따라서 PHP에 내장된 DOM 조작 기능을 사용하여 HTML 페이지를 구문 분석할 수 있습니다.
DOM 작업 기능을 사용하기 전에 HTML 페이지를 DOMDocument 개체에 로드해야 합니다. 코드는 다음과 같습니다.
$dom = new DOMDocument(); $dom->loadHTML($html);
위 코드에서는 빈 DOMDocument 개체를 만들고 loadHTML 함수를 사용하여 HTML을 가져왔습니다. 페이지가 DOMDocument 개체에 로드됩니다.
다음으로 DOMDocument 개체를 통해 HTML 페이지의 태그를 가져올 수 있습니다. 코드는 다음과 같습니다.
$tags = $dom->getElementsByTagName("tag_name");
위 코드에서는 getElementsByTagName 함수를 사용하여 HTML 페이지에 지정된 태그를 가져옵니다. 모든 하이퍼링크 태그 가져오기:
$links = $dom->getElementsByTagName("a");
모든 이미지 태그 가져오기:
$imgs = $dom->getElementsByTagName("img");
모든 단락 태그 가져오기:
$paras = $dom->getElementsByTagName("p");
3. 태그 속성 구문 분석
태그 자체를 가져오는 것 외에도 태그의 속성도 구문 분석해야 합니다. 예를 들어 모든 하이퍼링크 href 속성을 가져옵니다.
foreach ($links as $link) { $href = $link->getAttribute("href"); // do something with $href }
위 코드에서는 getAttribute 함수를 사용하여 지정된 태그의 지정된 속성 값을 가져온 다음 이를 $href 변수에 저장합니다.
4. 쓸모없는 정보 필터링
HTML 페이지를 구문 분석할 때 광고, 탐색 표시줄 등 쓸모 없는 정보가 나타날 수 있습니다. 이 정보의 간섭을 피하기 위해 우리는 쓸모없는 정보를 걸러내는 몇 가지 기술을 사용해야 합니다.
일반적으로 사용되는 필터링 방법은 다음과 같습니다.
예를 들어 텍스트 태그만 가져올 수 있습니다.
$texts = $dom->getElementsByTagName("text");
CSS 선택기를 사용하면 필요한 태그를 쉽게 찾을 수 있습니다. 예를 들어 클래스 이름이 "list"인 모든 태그를 가져옵니다.
$els = $dom->querySelectorAll(".list");
키워드 필터링을 통해 불필요한 정보를 쉽게 삭제할 수 있습니다. 예를 들어 "광고" 키워드 태그가 포함된 모든 태그를 삭제합니다.
foreach ($paras as $para) { if (strpos($para->nodeValue, "广告") !== false) { $para->parentNode->removeChild($para); } }
$links_arr = array(); foreach ($links as $link) { $href = $link->getAttribute("href"); array_push($links_arr, $href); }
위 내용은 PHP를 사용하여 간단한 웹 크롤러 만들기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!