PHP 데이터를 크롤링 할 때는 데이터를 크롤링하지 않는 문제가 발생하는 것이 일반적입니다. 네트워크 연결 문제, 페이지 구조 변경 및 크롤링 코드 오류를 포함하여 그 이유는 다양 할 수 있습니다. 이 기사는 이러한 일반적인 문제에 대한 효과적인 솔루션을 제공합니다.
데이터 크롤링은 네트워크 연결에 따라 다르므로 우선 네트워크 연결이 정상인지 확인해야합니다. 대상 웹 사이트에 액세스 할 수없는 경우 크롤링은 자연스럽게 실패합니다.
예를 들어 핑 명령을 통해 대상 URL에 정상적으로 액세스 할 수 있는지 확인할 수 있습니다.
<span class="fun">핑 example.com</span>
페이지의 HTML 구조가 변경 될 수있어 이전 크롤링 코드가 데이터를 추출하지 못합니다. 따라서 페이지 구조를 확인하고 크롤링 코드를 조정하는 것이 매우 중요합니다.
브라우저의 개발자 도구를 사용하여 페이지의 HTML 구조를보고 대상 데이터의 위치를 찾고 새로운 구조에 따라 크롤링 코드를 수정할 수 있습니다.
// 코드 예제
$html = file_get_html('http://example.com');
$data = $html->find('.data'); // 수정하도록 수정하십시오CSS선택자
잘못된 함수 또는 매개 변수를 사용하는 것과 같은 크롤링 코드 자체에 문제가있을 수 있으므로 데이터가 크롤링됩니다. 이 시점에서 코드를 확인하고 수정해야합니다.
중간 변수 (var_dump 또는 echo 사용)를 출력하여 코드 실행 상태를 확인하고 데이터가 성공적으로 크롤링되는지 확인할 수 있습니다.
// 코드 예제
$html = file_get_html('http://example.com');
var_dump($html); // 페이지가 성공적으로 얻어 졌는지 확인하십시오HTML
$data = $html->find('.data');
var_dump($data); // 데이터가 올바르게 추출되었는지 확인하십시오
일부 웹 사이트는 크롤링 방지 메커니즘을 사용하여 자동 크롤링을 제한 할 수 있습니다. 이 문제를 해결하려면 브라우저의 사용자 동작을 시뮬레이션 할 수 있습니다.
사용자 에이전트 또는 참조와 같은 필드 추가와 같은 HTTP 헤더 정보를 설정하여 브라우저 요청을 시뮬레이션 할 수 있습니다.
// 코드 예제
$options = array(
'http' => array(
'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
)
);
$context = stream_context_create($options);
$html = file_get_html('http://example.com', false, $context);
PHP 데이터 크롤링 프로세스 중에 데이터를 크롤링하지 않는 것은 드문 일이 아닙니다. 일반적인 네트워크 연결을 확인하고 페이지 구조를 확인하고 크롤링 코드를 수정하고 사용자 동작을 시뮬레이션함으로써 개발자는 이러한 문제를 해결하고 데이터 크롤링 작업을 성공적으로 완료 할 수 있습니다. 이 기사의 조언이 필요한 데이터를 성공적으로 캡처하는 데 도움이되기를 바랍니다.