我相信页面的标记是我遇到的问题的一部分,所以我认为我需要发布源代码和 JSFiddle JSFiddle和原始 GIS 页面
我正在尝试从底部的表格中获取诸如名称:和地址:之类的信息。
尝试解决方案:
我写了下面的代码,希望能看到所有的表数据,但我要从中获取数据的表什么也没返回。
<?php
$k=0;
$num=1000;
var_dump(libxml_use_internal_errors(true));
$domOb = new DOMDocument();
$html = @$domOb->loadHTMLFile('http://www.gis.catawba.nc.us/website/Parcel/parcel_main.asp?Cmd=query&key=372215634301&type=P');
$domOb->preserveWhiteSpace = false;
$items = $domOb->getElementsByTagName('td');
while ($k<(int)$num){
echo $items->item($k++)->nodeValue.'<br>';
};
?>
所有返回的是:
bool(false) Real Estate Search - Legacy Map Layers visible FAQ's Help GIS Home
所以我希望有人能告诉我我做错了什么错过了我正在寻找的所有数据?我怎样才能尽可能容易/简单地只提取名称和地址?
使用 Xpath 也尝试了以下操作,但收到很多警告...
$dom = new DOMDocument;
$dom->load('http://www.gis.catawba.nc.us/website/Parcel/parcel_main.asp?Cmd=query&key=372215634301&type=P');
$s = simplexml_import_dom($dom);
echo $name = $s->xpath('//table[@class="words13]/td[contains(text(), "Name:")]');
echo $add = $s->xpath('//table[@class="words13]/td[contains(text(), Address:)]');
使用user2518542的代码并结合hakre代码我得到以下
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://www.gis.catawba.nc.us/website/Parcel/parcel_main.asp?Cmd=QUERY&key=372215634301&type=P&width=1280&height=923");
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
$doc->loadHTML($result);
$tds = $doc->getElementsByTagname('td');
foreach($tds as $td) {
printf(" * %s\n", $td->textContent);
echo '<br>';
}
以下成功打印出所有标签。