>  기사  >  백엔드 개발  >  PHP 크롤러 연습: Douyu 라이브 방송 데이터 크롤링

PHP 크롤러 연습: Douyu 라이브 방송 데이터 크롤링

PHPz
PHPz원래의
2023-06-13 10:32:482000검색

인터넷 기술이 발전함에 따라 데이터 크롤링은 데이터 분석, 기계 학습 및 기타 분야에서 점점 더 중요한 전제 조건이 되었습니다. 그 중에서도 크롤러 기술은 더욱 필수적이다. 널리 사용되는 백엔드 프로그래밍 언어인 PHP는 크롤러 분야에서도 광범위한 응용 프로그램과 이점을 제공합니다. 이 기사에서는 Douyu 라이브 방송 데이터 크롤링을 예로 들어 PHP 크롤러의 실제 응용 프로그램을 소개합니다.

  1. 준비

크롤러를 시작하기 전에 몇 가지 준비를 해야 합니다. 먼저, 로컬 서버 환경을 구축해야 합니다. PHP 환경 배포를 용이하게 하려면 WAMP 및 XAMPP와 같은 통합 도구를 사용하는 것이 좋습니다.

두 번째로 cURL, simple_html_dom 및 기타 구성 요소를 포함한 PHP 관련 라이브러리와 도구를 설치해야 합니다. cURL은 HTTP 요청과 같은 작업에 사용할 수 있는 고급 네트워크 데이터 전송 라이브러리입니다. simple_html_dom은 HTML을 구문 분석하는 라이브러리로, 웹 페이지에서 다양한 정보를 빠르고 쉽게 추출하는 데 도움이 됩니다.

  1. Douyu 라이브 방송 데이터 크롤링

다음으로 크롤러 코드 작성을 시작할 수 있습니다. Douyu 라이브 방송 데이터의 크롤링을 예로 들면, 먼저 대상 웹페이지와 크롤링할 데이터를 명확히 해야 합니다. 이 기사에서는 Douyu 홈페이지를 예로 들어 생방송 방 이름, 앵커 이름, 시청자 수, 생방송 방 링크 등 일부 인기 생방송 방에 대한 정보를 얻을 수 있습니다.

다음은 기본 크롤러 코드 프레임워크입니다.

<?php
// 1. 导入 simple_html_dom 库
require 'simple_html_dom.php';

// 2. 指定爬虫目标网页 URL
$url = 'https://www.douyu.com/';

// 3. 使用 cURL 发起 HTTP 请求,并获取响应结果
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置返回结果为字符串
$response = curl_exec($ch);

// 4. 解析 HTML,并提取目标信息
$html = new simple_html_dom();
$html->load($response);
// TODO: 提取目标信息

// 5. 清理资源
$html->clear();
curl_close($ch);
?>

그 중 첫 번째 단계는 simple_html_dom 라이브러리를 가져오는 것, 두 번째 단계는 크롤러 대상 웹 페이지 URL을 지정하는 것, 세 번째 단계는 cURL을 사용하여 시작하는 것입니다. HTTP를 요청하고 응답 결과를 얻으며 다섯 번째 단계는 리소스를 정리하는 것입니다. 이러한 단계는 비교적 기본적이므로 여기서는 자세히 설명하지 않습니다.

핵심 단계는 HTML을 구문 분석하고 대상 정보를 추출하는 4단계입니다. Douyu 홈페이지에서는 DyListCover-info라는 div 요소에 인기 라이브 방송방에 대한 정보가 포함되어 있습니다. 그러면 simple_html_dom /code>에서 제공하는 find()DyListCover-info 的 div 元素中,那么我们就可以通过 simple_html_dom 库提供的 find() 方法,筛选出这些 div 元素,进而提取出其中的信息。

具体代码如下:

// 4. 解析 HTML,并提取目标信息
$hot_list = [];
foreach ($html->find('.DyListCover-info') as $item) {
  $hot = [];
  $hot['title'] = $item->find('.DyListCover-intro', 0)->plaintext; // 直播间名称
  $hot['anchor'] = $item->find('.DyListCover-user', 0)->plaintext; // 主播名
  $hot['viewer'] = $item->find('.DyListCover-hot', 0)->plaintext; // 观看人数
  $hot['url'] = $item->find('a', 0)->href; // 直播间链接
  array_push($hot_list, $hot);
}
echo json_encode($hot_list);

在上述代码中,我们通过 $html->find('.DyListCover-info') 选择器获取所有包含热门直播间信息的 div 元素,然后通过它们的子元素进一步提取出目标信息。注意,这里使用了 PHP 的数组来存储提取出的数据,并通过 json_encode()

구체적인 코드는 다음과 같습니다.
    rrreee
  1. 위 코드에서는 $html->find('.DyListCover-info') 선택기를 사용하여 인기 있는 라이브가 포함된 모든 div 요소를 가져옵니다. 방송실 정보, 그 다음 해당 하위 요소를 통해 타겟 정보를 추가로 추출합니다. 여기서는 추출된 데이터를 저장하기 위해 PHP 배열을 사용하고 json_encode() 메서드를 통해 JSON 형식으로 변환하여 터미널에 출력한다는 점에 유의하세요.

요약

🎜🎜이 글에서는 Douyu 라이브 방송 데이터 크롤링을 예로 들어 PHP 크롤러의 실제 적용 과정을 자세히 설명합니다. 실제로 PHP 멀티스레딩, 비동기 프로그래밍 및 기타 기술을 사용하여 효율성과 안정성을 더욱 향상시키거나 크롤링된 데이터를 데이터베이스 또는 클라우드 플랫폼에 저장하는 등 특정 요구에 따라 크롤러 코드를 계속 확장하고 최적화할 수 있습니다. 처리보다 심층적인 분석 및 적용이 가능합니다. 🎜

위 내용은 PHP 크롤러 연습: Douyu 라이브 방송 데이터 크롤링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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