0

このWebページから次のデータ変数を取得しようとしました

  • 住所
  • 郵便番号
  • 電話を保存する
  • 薬局電話
  • 営業時間
  • 薬局の営業時間
  • 受け取りオプション
  • この店舗/場所で
  • 営業時間

この方法で試しましたが、上記のデータ変数に保存するデータを分離できないため、PHP の専門家からの助けと提案が必要です

 $html = file_get_html('http://www.walmart.com/storeLocator/ca_storefinder_results.do?serviceName=&rx_title=com.wm.www.apps.storelocator.page.serviceLink.title.default&rx_dest=%2Findex.gsp&sfrecords=50&sfsearch_single_line_address=K6T');
foreach($html->find('div[class=StoreAddress] div[1]') as $name)
{
echo $name->innertext.'<br>';
}

この Web サイトの html は、タグに適切な ID が割り当てられていないため、各データ項目をそのタグで識別するのが複雑です。このウェブサイトから上記のデータ項目を解析する簡単でスケーラブルな方法を誰でも提案できますか?

ありがとう

4

3 に答える 3

2

アドレスの前に素敵な hr タグを実装していることがわかります。それを hr タグで分解し、残りの部分とアドレスを使用して html オブジェクトを再構築します。次に、div を反復処理し、preg_match を使用して、目的のデータへの参照がオブジェクトに含まれているかどうかを確認します。

foreach($html->find(’div’) as $test)
    {
     if(preg_match(’/Adress/’,$test->innertext))
        {
        filter out addy
        }
    }
于 2012-05-25T22:44:41.653 に答える
1

simple_html_domライブラリを試してください。このページには、すぐに理解できる簡単な例があります。

私はそれを、まさにあなたがやろうとしている種類のものにうまく使ってきました.

于 2012-05-28T02:36:21.907 に答える
1

html はそれほど複雑ではありません。Php の反復子と dom/regex 関数は、このようなタスクには不器用ですが、実行できます。

$dom = new DOMDocument();
@$dom->loadHTMLFile('http://www.walmart.com/storeLocator/ca_storefinder_details_short.do?rx_dest=/index.gsp&rx_title=com.wm.www.apps.storelocator.page.serviceLink.title.default&edit_object_id=2092&sfsearch_single_line_address=K6T');
$xpath = new DOMXPath($dom);

foreach($xpath->query('//div[@class="StoreAddress"]') as $div) {
  // title
  echo $xpath->query(".//div[1]", $div)->item(0)->nodeValue . "\n";
  // street
  echo $xpath->query(".//div[2]", $div)->item(0)->nodeValue . "\n";
  // city state and zip
  preg_match('/(.*), ([A-Z]{2}) (\d{5})/', $xpath->query(".//div[3]", $div)->item(0)->nodeValue, $m);
  // city
  echo $m[1] . "\n";
  // state
  echo $m[2] . "\n";
  // zip
  echo $m[3] . "\n";
}
于 2012-05-26T23:44:55.543 に答える