我正在尝试解析当地天气频道网站的html数据,以获取我所在地区周围的学校,企业和教堂的信息。
我遇到了这个问题但是信息包含在没有id的表中,我可以使用它来识别它们。 下面我列举了一个他们的html表格的示例。是否可以解析这样的多个HTML表,并使用HTML DOM Parser和PHP提取包含的数据。我已阅读 this 文档,但似乎无法找到适用的解决方案。
谢谢!
编辑:我可能还应该指定我想要获取此数据并能够将其解析为JSON数据以用于加载应用程序。所以基本上有组织名称,然后是我可以从JSON页面获取的状态。
<table class="table table-condensed table-striped">
<tbody>
<tr>
<th class="span5">Organization</th>
<th class="span9">Status</th>
</tr>
<tr>
<td><b>BEACON HOPE CHURCH - GRAND ISLAND</b></td>
<td>Activity Canceled Sunday<small>: No Evening Classes</small></td>
</tr>
<tr>
<td><b>PRINCE OF PEACE CATHOLIC (KEARNEY)</b></td>
<td>Closed Monday<small>: SUNDAY EVENING ACTIVITIES CANCELED, NO MON. MORNING MASS, OFFICES CLOSED MON.</small></td>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
在上面评论过的用户短信的帮助下找到了我的问题的答案。这个php从第一个表中提取数据并以JSON格式对其进行编码。
<?php
include('simple_html_dom.php');
header('Content-Type: application/json');
$html = file_get_html('http://www.1011now.com/weather/closings');
$row_count=0;
$json = array();
// Find all links
$table = $html->find('table', 0);
foreach($table->find('tr') as $row) {
$name = $row->find('td',0)->innertext;
$status = $row->find('td',1)->innertext;
$json[] = [ 'name' => strip_tags($name), 'status' => strip_tags($status)];
}
$options = array(
'http' => array(
'method' => 'POST',
'content' => json_encode(array('Closings' =>$json)),
'header'=> "Content-Type: application/json\r\n" .
"Accept: application/json\r\n"
)
);
$context = stream_context_create( $options );
$result = file_get_contents( $url, false, $context );
$response = json_decode( $result );
echo json_encode(array('Closings' =>$json), JSON_PRETTY_PRINT);
?>