>  기사  >  백엔드 개발  >  PHP에서 웹 크롤링 및 데이터 스크래핑을 수행하는 방법은 무엇입니까?

PHP에서 웹 크롤링 및 데이터 스크래핑을 수행하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-05-20 21:51:27921검색

인터넷 시대의 도래와 함께 네트워크 데이터를 크롤링하고 가져오는 것이 많은 사람들의 일상 업무가 되었습니다. 웹 개발을 지원하는 프로그래밍 언어 중에서 PHP는 확장성과 사용 용이성으로 인해 웹 크롤러 및 데이터 스크래핑에 널리 사용됩니다. 이 기사에서는 다음과 같은 측면에서 PHP에서 웹 크롤링 및 데이터 스크래핑을 수행하는 방법을 소개합니다.

1. HTTP 프로토콜 및 요청 구현

웹 크롤링 및 데이터 크롤링을 수행하기 전에 HTTP 프로토콜 및 요청 구현에 대해 어느 정도 이해해야 합니다. HTTP 프로토콜은 요청-응답 모델을 기반으로 합니다. 웹 페이지를 크롤링하는 프로세스는 요청을 시뮬레이션하고 응답을 얻는 프로세스입니다. PHP에서는 컬 라이브러리를 사용하여 HTTP 요청을 구현할 수 있습니다. 컬을 통해 세션을 초기화하고 요청 매개변수를 설정한 후 요청을 보낸 후 응답 정보를 가져옵니다. 다음은 간단한 예입니다.

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

이 코드는 컬을 사용하여 URL 'https://example.com'에 대한 GET 요청을 구현하고 응답 콘텐츠를 반환합니다. 그 중 CURLOPT_URL이 요청된 URL이고, CURLOPT_RETURNTRANSFER가 true로 설정되어 있습니다. curl_exec() 함수는 응답 내용을 직접 출력하지 않고 반환합니다.

2. HTML 파싱

웹페이지의 응답 내용을 얻은 후 대상 정보를 추출하기 위해 HTML을 파싱해야 합니다. PHP에서는 Symfony의 DomCrawler 또는 Goutte와 같은 타사 라이브러리를 사용하여 HTML을 구문 분석할 수 있습니다. 다음은 DomCrawler를 사용하여 HTML을 구문 분석하는 간단한 예입니다.

use SymfonyComponentDomCrawlerCrawler;

$html = '<html><title>example</title><body><div class="post"><h2>Test</h2><p>Content</p></div></body></html>';
$crawler = new Crawler($html);
$title = $crawler->filter('title')->text();
$content = $crawler->filter('.post p')->text();

이 코드는 먼저 DomCrawler 라이브러리를 설치하고 가져온 다음 $html 문자열을 사용하여 Crawler 개체를 초기화해야 합니다. 그런 다음 filter() 메서드를 통해 지정된 HTML 요소를 추출하고 text() 메서드를 통해 일반 텍스트로 변환할 수 있습니다.

3. 정규식

PHP에서는 정규식을 사용하여 HTML 텍스트를 조작할 수도 있습니다. 정규식은 텍스트의 특정 문자, 단어 또는 패턴과 일치하는 패턴을 정의하는 범용 텍스트 일치 도구입니다. 다음은 간단한 예입니다.

$html = '<html><title>example</title><body><div class="post"><h2>Test</h2><p>Content</p></div></body></html>';
preg_match('/<title>(.*)</title>/', $html, $matches);
$title = $matches[1];
preg_match('/<div class="post">(.*)</div>/', $html, $matches);
$content = $matches[1];

이 코드는 preg_match() 함수를 사용하여 HTML의 제목과 내용을 일치시키고 정의된 정규식을 통해 대상 콘텐츠를 추출합니다. 모호한 일치와 우연한 일치를 방지하려면 정규식은 최대한 정확해야 합니다.

4. 데이터베이스 운영

데이터 크롤링에는 일반적으로 후속 분석 및 사용을 위해 크롤링된 데이터를 저장해야 합니다. PHP에서는 데이터 저장을 위해 MySQL과 같은 여러 데이터베이스를 사용할 수 있습니다. 다음은 간단한 MySQL 데이터베이스 작업 예제입니다.

$conn = mysqli_connect("localhost", "user", "password", "example");
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO posts (title, content) VALUES ('$title', '$content')";
if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);

이 코드는 mysqli_connect() 함수를 사용하여 MySQL 데이터베이스에 연결한 후 mysqli_query() 함수를 사용하여 게시물 테이블에 제목과 내용을 삽입하는 삽입 작업을 수행합니다. . 이 방법은 SQL 주입 등의 데이터 보안 문제가 있으므로, 준비된 문장 등의 보안 대책을 고려해야 한다는 점에 유의해야 한다.

요약

위의 소개를 통해 HTTP 프로토콜 및 요청 구현, HTML 구문 분석, 정규식 및 데이터베이스 작업 등을 포함하여 PHP에서 웹 크롤링 및 데이터 수집의 기본 방법을 이해할 수 있습니다. 실제 적용에서는 웹 페이지 구조와 대상 데이터의 특성을 기반으로 적절한 구현 방법을 유연하게 선택하는 것도 필요합니다. 저는 이러한 방법을 사용하면 데이터를 보다 효율적으로 크롤링하고 스크랩할 수 있다고 믿습니다.

위 내용은 PHP에서 웹 크롤링 및 데이터 스크래핑을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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