1

大学のプロジェクトで、いくつかのバックエンド アルゴリズムを使用して Web サイトを作成しています。これらをデモ環境でテストするには、大量の偽のデータが必要です。このデータを取得するために、いくつかのサイトをスクレイピングするつもりです。これらのサイトの 1 つに freelance.com があります。データを抽出するために、Simple HTML DOM パーサーを使用していますが、これまでのところ、必要なデータを実際に取得する試みに成功していません。

これは、スクレイピングしようとしているページの HTML レイアウトの例です。赤いボックスは必要なデータを示しています。

Freelance.com の HTML コードのスクリーンショット

いくつかのチュートリアルに従って、これまでに作成したコードを次に示します。

<?php
include "simple_html_dom.php";
// Create DOM from URL
$html = file_get_html('http://www.freelancer.com/jobs/Website-Design/1/');

//Get all data inside the <tr> of <table id="project_table">
foreach($html->find('table[id=project_table] tr') as $tr) {

    foreach($tr->find('td[class=title-col]') as $t) {
        //get the inner HTML
        $data = $t->outertext;
        echo $data;
    }
}

?>

どうすればこれを機能させることができるかについて、誰かが私を正しい方向に向けることができれば幸いです。

ありがとう。

4

1 に答える 1

1

生のソース コードが異なるため、期待どおりの結果が得られません...

を使用して未加工のソース コードを確認できますctrl+u。データは にtable[id=project_table_static]あり、セルtdには属性がありません。したがって、テーブルからすべての URL を取得する作業コードを次に示します。

$url = 'http://www.freelancer.com/jobs/Website-Design/1/';
// Create DOM from URL
$html = file_get_html($url);

//Get all data inside the <tr> of <table id="project_table">
foreach($html->find('table#project_table_static tbody tr') as $i=>$tr) {

    // Skip the first empty element
    if ($i==0) {
        continue;
    }

    echo "<br/>\$i=".$i;

    // get the first anchor
    $anchor = $tr->find('a', 0);
    echo " => ".$anchor->href;
}

// Clear dom object
$html->clear(); 
unset($html);

デモ

于 2013-11-07T22:19:53.367 に答える