웹 페이지를 크롤링하는 PH...LOGIN

웹 페이지를 크롤링하는 PHP 컬 사용자 정의 가져오기 메소드

웹페이지의 콘텐츠를 가져온 후 get 메소드를 사용하여 해당 콘텐츠를 일치시킬 수 있다고 가정해 보겠습니다.

함수 이름이 get이라고 가정하고 컬을 사용하여 함수를 캡슐화할 수 있습니다. URL을 전달하면 지정된 웹페이지를 요청하고 지정된 웹페이지의 HTML 코드를 반환할 수 있습니다. 코드는 다음과 같습니다.

function get($url) {
    //初使化curl
    $ch = curl_init();
    //请求的url,由形参传入
    curl_setopt($ch, CURLOPT_URL, $url);
    //将得到的数据返回
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //不处理头信息
    curl_setopt($ch, CURLOPT_HEADER, 0);
    //连接超过10秒超时
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    //执行curl
    $output = curl_exec($ch);
    //关闭资源
    curl_close($ch);
    //返回内容
    return $output;
}

이제 NetEase에서 목록을 요청하고 제목과 URL을 가져오기 위해 작성한 get 메소드를 사용합니다.

먼저 get 메소드를 사용하여 URL을 전달할 수 있습니다. 이 URL에 해당하는 웹페이지의 HTML을 가져옵니다.

웹사이트 주소는 New Media Observation Network의 뉴스 목록 페이지입니다: http://www.xmtnews.com/events.

빨간색 영역 수집:

1.png

1. 빨간색 영역의 html을 가져옵니다.

이 범위는 다음 HTML 코드로 시작합니다.

<section class="ov">

는 다음 코드로 끝납니다.

<div class="hr-10"></div>

preg_match를 사용하여 정규식을 작성하고 이를 일치시켜 가져옵니다. 범위에 대한 빨간색 HTML입니다. 일치하는 HTML을 $area 변수에 할당합니다.

의 일치하는 정규식은 다음과 같습니다.

<section class="ov">(.*?)<div class="hr-10"><\/div>/mis'

2. 빨간색 영역

<에 제목과 제목 URL을 일치시킵니다. 🎜>우리는 모든 제목이 <h3> 태그에 있음을 발견했습니다. preg_match_all을 사용하여 정규식을 작성합니다.

preg_match_all('/<h3><a href="(.*?)" title=".*?" class="headers" target="_blank">(.*?)<\/a><\/h3>/mis', $area, $find);

url과 내용이 일치하는 내용을 $find에 넣고 $find 배열을 출력하면 일치하는 결과를 볼 수 있습니다.

필요한 경우 반복하여 각 행의 제목과 각 행의 URL을 읽고 표시할 수도 있습니다.

모든 코드 데모는 다음과 같습니다:

<?php

$content = get('http://www.xmtnews.com/events');

preg_match('/<section class="ov">(.*?)<div class="hr-10"><\/div>/mis', $content, $match);

//将正则匹配到的内容赋值给$area
$area = $match[1];

preg_match_all('/<h3><a href="(.*?)" title=".*?" class="headers" target="_blank">(.*?)<\/a><\/h3>/', $area, $find);


var_dump($find);

function get($url) {

   //初使化curl
   $ch = curl_init();

   //请求的url,由形参传入
   curl_setopt($ch, CURLOPT_URL, $url);

   //将得到的数据返回
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   //不处理头信息
   curl_setopt($ch, CURLOPT_HEADER, 0);

   //连接超过10秒超时
   curl_setopt($ch, CURLOPT_TIMEOUT, 10);

   //执行curl
   $output = curl_exec($ch);

   //关闭资源
   curl_close($ch);

   //返回内容
   return $output;
}
?>


다음 섹션

<?php $content = get('http://www.xmtnews.com/events'); preg_match('/<section class="ov">(.*?)<div class="hr-10"><\/div>/mis', $content, $match); //将正则匹配到的内容赋值给$area $area = $match[1]; preg_match_all('/<h3><a href="(.*?)" title=".*?" class="headers" target="_blank">(.*?)<\/a><\/h3>/', $area, $find); var_dump($find); function get($url) { //初使化curl $ch = curl_init(); //请求的url,由形参传入 curl_setopt($ch, CURLOPT_URL, $url); //将得到的数据返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不处理头信息 curl_setopt($ch, CURLOPT_HEADER, 0); //连接超过10秒超时 curl_setopt($ch, CURLOPT_TIMEOUT, 10); //执行curl $output = curl_exec($ch); //关闭资源 curl_close($ch); //返回内容 return $output; } ?>
코스웨어