php curl custom get kaedah untuk merangkak halaman web

Andaikan kita menggunakan kaedah dapatkan untuk meminta halaman web Selepas mendapat kandungan halaman web, kita boleh memadankan kandungan yang sepadan.

Kita boleh menggunakan curl untuk merangkum fungsi, dengan mengandaikan nama fungsi adalah get. Dengan memasukkan URL, anda boleh meminta halaman web yang ditentukan dan mengembalikan kod HTML halaman web yang ditentukan. Kodnya adalah seperti berikut:

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;
}

Kami kini menggunakan kaedah dapatkan yang kami tulis untuk meminta senarai daripada NetEase dan ambil tajuk dan url.

Kita boleh menghantar URL terlebih dahulu menggunakan kaedah get. Dapatkan html halaman web yang sepadan dengan URL ini.

Alamat tapak web ialah halaman senarai berita bagi Rangkaian Pemerhatian Media Baharu: http://www.xmtnews.com/events.

Kumpulkan kawasan merah:

1.png

1 Dapatkan html kawasan merah

Julat ini bermula dengan kod HTML berikut:

<section class="ov">

berakhir dengan kod berikut:

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

Gunakan preg_match untuk menulis ungkapan biasa dan memadankannya untuk mendapatkan HTML merah untuk julat. Berikan HTML yang dipadankan kepada pembolehubah $kawasan. Ungkapan biasa padanan

adalah seperti berikut:

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

2. Padankan tajuk dan URL tajuk di kawasan merah

Kami Mendapati bahawa semua tajuk berada dalam teg <h3> Kami menggunakan preg_match_all untuk menulis ungkapan ungkapan biasa.

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

Letakkan kandungan yang sepadan dengan url dan kandungan ke dalam $find Cetak tatasusunan $find untuk melihat hasil yang sepadan.

Jika perlu, anda juga boleh gelung untuk membaca dan memaparkan tajuk setiap baris dan URL setiap baris.

Semua demonstrasi kod adalah seperti berikut:

<?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;
}
?>


Meneruskan pembelajaran
||
<?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; } ?>
  • Cadangan kursus
  • Muat turun perisian kursus