0

私はクローラー プロジェクトに取り組んでおり、あなたの助けが必要です。これは私の最初のプロジェクトです。タスクは、「http://justdial.com」からデータを取得することです。たとえば、都市名 (バンガロール)、カテゴリ (ホテル)、ホテル名、住所、電話番号を取得したいと考えています。

これからアドレスを取得したように、「id」からタグの内容を取得するコードを作成しました。

<?php

$url="http://www.justdial.com/Bangalore/hotels";  
$original_file = file_get_contents("$url");
$stripped_file = strip_tags($original_file, "<div>");

$newlines="'<div class=\"logoDesc\">(.*?)</div>'si";
$newlines=preg_replace('#<div(?:[^>]*)>.</div>#u','',$newlines);

preg_match_all("$newlines", $stripped_file, $matches);


//DEBUGGING

  //$matches[0] now contains the complete A tags; ex: <a href="link">text</a>
  //$matches[1] now contains only the HREFs in the A tags; ex: link

  header("Content-type: text/plain"); //Set the content type to plain text so the print below is easy to read!
 $path= ($matches);

 print_r($path); //View the array to see if it worked
?>

問題は、コンテンツからタグを分離してデータベースに保存したいということです。そしてデータベースからエクセルシートへ。私を助けてください。

4

1 に答える 1

1

HTML の解析に正規表現を使用しないでください。DomDocumentのようなものを使用する必要があります。使用中の小さな例:

<?php
   $str = '<h1>T1</h1>Lorem ipsum.<h1>T2</h1>The quick red fox...<h1>T3</h1>... jumps over the lazy brown FROG';
   $DOM = new DOMDocument;
   $DOM->loadHTML($str);

   //get all H1
   $items = $DOM->getElementsByTagName('h1');

   //display all H1 text
   for ($i = 0; $i < $items->length; $i++)
        echo $items->item($i)->nodeValue . "<br/>";
?>
于 2012-10-03T08:12:47.157 に答える