使用Simple HTML DOM Parser从HTML中提取数据

时间:2013-11-07 18:42:01

标签: php parsing simple-html-dom

对于大学项目,我正在创建一个带有一些后端算法的网站,并在演示环境中测试这些,我需要大量的假数据。为了得到这些数据,我打算刮掉一些网站。其中一个站点是freelance.com。为了提取数据,我正在使用Simple HTML DOM Parser,但到目前为止,我一直没有成功地获得我需要的数据。

以下是我打算抓取的页面的HTML布局示例。红色框标记所需的数据。

Screenshot of HTML Code on Freelance.com

以下是我在完成一些教程之后编写的代码。

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

?>

希望有人能指出我如何使这项工作正确的方向。

感谢。

1 个答案:

答案 0 :(得分:1)

原始源代码不同,这就是为什么你没有得到预期的结果......

您可以使用ctrl+u检查原始源代码,数据位于table[id=project_table_static],而单元格td没有属性,因此,这是获取所有网址的工作代码从表中可以看出:

$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);

Demo