Webページをクロールするphpのcurlカスタムgetメソッド
get メソッドを使用して Web ページのコンテンツを取得した後、対応するコンテンツを照合できるとします。
関數(shù)名が get であると仮定して、curl を使用して関數(shù)をカプセル化できます。 URL を渡すことで、指定した Web ページをリクエストし、指定した Web ページの HTML コードを返すことができます。コードは次のとおりです。
function get($url) { //初使化curl $ch = curl_init(); //請(qǐng)求的url,由形參傳入 curl_setopt($ch, CURLOPT_URL, $url); //將得到的數(shù)據(jù)返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不處理頭信息 curl_setopt($ch, CURLOPT_HEADER, 0); //連接超過(guò)10秒超時(shí) curl_setopt($ch, CURLOPT_TIMEOUT, 10); //執(zhí)行curl $output = curl_exec($ch); //關(guān)閉資源 curl_close($ch); //返回內(nèi)容 return $output; }
ここで、作成した get メソッドを使用して NetEase からリストをリクエストし、タイトルと URL を取得します。
まず get メソッドで URL を渡すことができます。この URL に対応する Web ページの HTML を取得します。
URLはNew Media Observation Networkのニュース一覧ページです: http://www.xmtnews.com/events。
赤い領(lǐng)域を収集します:
1. 赤い範(fàn)囲の HTML を取得します
この範(fàn)囲は次の HTML コードで始まります:
<section class="ov">
は次のコードで終わります:
<div class="hr-10"></div>
preg_match を使用すると、正規(guī)表現(xiàn)を作成し、それを照合して赤色の範(fàn)囲の HTML を取得します。一致した HTML を変數(shù) $area に代入します。
一致する正規(guī)表現(xiàn)は次のとおりです:
<section class="ov">(.*?)<div class="hr-10"><\/div>/mis'
2. 赤い領(lǐng)域のタイトルとタイトルの URL を一致させます
すべてのタイトルが <h3> タグ內(nèi)にあることがわかります。 preg_match_all を使用して正規(guī)表現(xiàn)を記述します。
preg_match_all('/<h3><a href="(.*?)" title=".*?" class="headers" target="_blank">(.*?)<\/a><\/h3>/mis', $area, $find);
URL とコンテンツに一致するコンテンツを $find に配置し、$find 配列を出力すると、一致した結(jié)果が表示されます。
必要に応じて、タイトルの各行と URL の各行をループで読み取って表示することもできます。
すべてのコードのデモは次のとおりです:
<?php $content = get('http://www.xmtnews.com/events'); preg_match('/<section class="ov">(.*?)<div class="hr-10"><\/div>/mis', $content, $match); //將正則匹配到的內(nèi)容賦值給$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(); //請(qǐng)求的url,由形參傳入 curl_setopt($ch, CURLOPT_URL, $url); //將得到的數(shù)據(jù)返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不處理頭信息 curl_setopt($ch, CURLOPT_HEADER, 0); //連接超過(guò)10秒超時(shí) curl_setopt($ch, CURLOPT_TIMEOUT, 10); //執(zhí)行curl $output = curl_exec($ch); //關(guān)閉資源 curl_close($ch); //返回內(nèi)容 return $output; } ?>