对于大学项目,我正在创建一个带有一些后端算法的网站,并在演示环境中测试这些,我需要大量的假数据。为了得到这些数据,我打算刮掉一些网站。其中一个站点是freelance.com。为了提取数据,我正在使用Simple HTML DOM Parser,但到目前为止,我一直没有成功地获得我需要的数据。
以下是我打算抓取的页面的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;
}
}
?>
希望有人能指出我如何使这项工作正确的方向。
感谢。
答案 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);