>  기사  >  백엔드 개발  >  PHP를 사용하여 사용자 정의 크롤러 프레임워크를 구현하는 방법

PHP를 사용하여 사용자 정의 크롤러 프레임워크를 구현하는 방법

WBOY
WBOY원래의
2023-06-13 19:13:281084검색

인터넷의 지속적인 발전으로 정보의 양이 폭발적으로 증가하면서 귀중한 정보를 얻는 것이 많은 사람들에게 필요해졌습니다. 이러한 환경에서 크롤러 기술은 점차 등장하여 빅데이터 시대의 중요한 도구 중 하나로 자리 잡았습니다. 크롤러 기술은 응용 범위가 넓어 네트워크 여론 모니터링, 데이터 분석, 정보 마이닝 등 다양한 분야에서 활용될 수 있습니다. 이 기사에서는 PHP를 사용하여 사용자 정의 크롤러 프레임워크를 구현하는 방법을 소개합니다.

1. 크롤러 프레임워크의 원리

크롤러는 웹페이지 정보를 자동으로 획득하여 웹페이지 텍스트를 크롤링하여 분석 및 활용에 필요한 데이터를 추출하는 프로그램입니다. 크롤러 프레임워크는 맞춤형 획득, 구문 분석, 저장 및 기타 방법을 포함하는 크롤러 프로그램의 기초입니다.

크롤러 프로그램은 크롤러 프레임워크를 통해 구현됩니다. 기본 프로세스는 다음과 같습니다.

  1. 웹 페이지 정보 가져오기: 웹 페이지 텍스트 정보를 얻기 위해 HTTP 프로토콜을 통해 대상 웹 사이트에 요청을 보냅니다.
  2. 웹페이지 정보 분석: 웹페이지 텍스트를 분석하고 처리할 대상 데이터를 추출합니다.
  3. 저장 처리 결과: 향후 데이터 분석 및 활용을 위해 처리된 데이터를 저장합니다.

2. PHP 크롤러 프레임워크 구현

  1. 웹페이지 정보 가져오기

PHP에서는 CURL 라이브러리를 통해 HTTP 요청을 구현할 수 있습니다. CURL은 PHP에서 URL(Uniform Resource Locator,Uniform Resource Locator)을 처리하는 데 사용할 수 있는 강력한 오픈 소스 네트워크 라이브러리입니다.

코드는 다음과 같습니다.

$ch = curl_init();  // 初始化 cURL
$options =  array(
    CURLOPT_URL => $url,  // 请求的 URL
    CURLOPT_RETURNTRANSFER => 1,  // 返回原生的输出内容
    CURLOPT_ENCODING => '',  // 自动处理响应头中的 Transfer-Encoding
    CURLOPT_USERAGENT => $_SERVER['HTTP_USER_AGENT']  // 模拟 user-agent
);
curl_setopt_array($ch, $options); 
$result = curl_exec($ch);  // 执行请求
curl_close($ch);  // 关闭请求链接

위 코드에서 먼저 컬_init() 함수를 사용하세요. 그런 다음, 컬_setopt_array() 함수를 사용하여 요청된 URL, 기본 출력 콘텐츠 반환, 응답 헤더에서 Transfer-Encoding 자동 처리, 사용자 에이전트 시뮬레이션 등을 포함한 CURL 요청의 다양한 매개변수를 설정합니다. 마지막으로, curl_exec()를 통해 요청을 실행하고 요청 링크를 닫습니다. 위의 코드를 실행하면 대상 웹사이트의 웹페이지 정보를 성공적으로 얻을 수 있습니다.

  1. 웹 페이지 정보 구문 분석

PHP에서는 HTML 텍스트를 쉽게 구문 분석할 수 있는 일련의 DOM(문서 개체 모델) 인터페이스를 제공하는 DOMDocument 클래스를 사용하여 HTML 텍스트를 구문 분석할 수 있습니다.

코드는 다음과 같습니다.

$doc = new DOMDocument();
$doc->loadHTML($result);  // 加载 HTML 内容
$xpath = new DOMXPath($doc);
$tags = $xpath->query('//tag')  // 获取指定标签
foreach ($tags as $tag) {
    // 对标签内容进行解析
}

위 코드는 먼저 DOMDocument 클래스의 객체를 생성한 다음, loadHTML() 함수를 통해 웹페이지 텍스트를 로드한 다음, DOMXPath 클래스를 통해 지정된 태그를 얻고, 태그를 구문 분석합니다. 콘텐츠.

  1. 저장 처리 결과

PHP에서는 데이터베이스 작업을 용이하게 하기 위해 PDO(PHP Data Objects, PHP Data Objects) 인터페이스 세트를 제공하는 MySQL 데이터베이스를 통해 데이터를 저장할 수 있습니다.

코드는 다음과 같습니다.

$pdo = new PDO('mysql:host=$dbhost;dbname=$dbname', $username, $password); // 连接数据库
$sql = 'INSERT INTO table_name (field1, field2, ...) VALUES (:value1, :value2, ...)';  // SQL 语句
$stmt = $pdo->prepare($sql);  // 预处理 SQL 语句
$stmt->bindParam(':param1', $value1);  // 绑定参数
$stmt->bindParam(':param2', $value2);
...
$stmt->execute();  // 执行 SQL 语句

위 코드에서는 먼저 PDO 객체를 사용하여 MySQL 데이터베이스에 연결한 후 SQL 문을 사용하여 지정된 데이터 테이블에 데이터를 삽입한 후, SQL 문을 전처리합니다. 매개변수를 바인딩하면 SQL 문을 직접 실행할 수 있습니다. 데이터가 데이터베이스에 성공적으로 저장됩니다.

3. 크롤러 프레임워크 사용 사례

크롤러 프레임워크를 구현한 후 이를 사용하여 모든 웹사이트를 크롤링할 수 있습니다. 아래에서는 간단한 사용 사례를 보여줍니다. 예를 들어, 이제 Zhihu의 사용자 정보를 크롤링해야 합니다. 먼저 사용자의 페이지 정보를 얻어야 합니다:

$url = "https://www.zhihu.com/people/xxx";
$result = getCurl($url);

그런 다음 XPath를 통해 반환된 페이지 정보를 구문 분석하고 대상 정보를 얻습니다.

$doc = new DOMDocument();
$doc->loadHTML($result);
$xpath = new DOMXPath($doc);
// 用户名
$username = $xpath->query("//*[@class='ProfileHeader-name']/text()")->item(0)->nodeValue;
// 签名
$userbio = $xpath->query("//div[@class='ProfileHeader-headline']/span//@title")->item(0)->nodeValue;
// 关注数
$following_count = $xpath->query("//*[@class='NumberBoard-itemValue']/text()")->item(2)->nodeValue;
// 粉丝数
$followers_count = $xpath->query("//*[@class='NumberBoard-itemValue']/text()")->item(3)->nodeValue;

마지막으로 The MySQL 데이터베이스는 획득한 대상 정보를 저장합니다.

$pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');
$sql = "INSERT INTO `zhihu_users`(`username`, `userbio`, `following_count`, `followers_count`, `updated_at`) VALUES (:username, :userbio, :following_count, :followers_count, NOW())";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':username', $username);
$stmt->bindParam(':userbio', $userbio);
$stmt->bindParam(':following_count', $following_count);
$stmt->bindParam(':followers_count', $followers_count);
$stmt->execute();

위의 코드 예를 통해 웹 페이지 정보 획득, 웹 페이지 정보 구문 분석, 처리 결과 저장 등의 작업을 포함하여 PHP를 사용하여 사용자 정의 크롤러 프레임워크를 구현하는 과정을 볼 수 있습니다. . 이 프레임워크를 통해 대상 웹사이트를 쉽게 크롤링 및 분석하고 데이터 적용의 효율성과 정확성을 향상시킬 수 있습니다.

위 내용은 PHP를 사용하여 사용자 정의 크롤러 프레임워크를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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