通过 DOM 解析 HTML 表

2023-12-27

我相信页面的标记是我遇到的问题的一部分,所以我想我需要发布源代码和 JSFiddleJSFiddle http://jsfiddle.net/45xa9/和原来的

我正在尝试获取诸如名称:和地址:之类的信息 从底部的表格。

尝试解决方案:

我编写了以下代码,希望看到所有表数据,但我要从中获取数据的表什么也没有返回。

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

返回的只是:

布尔(假) 房地产搜索 - 旧版 地图图层 可见的 常见问题解答 帮助 地理信息系统主页

所以我希望有人能告诉我我做错了什么而错过了我正在寻找的所有数据? 如何尽可能轻松/简单地提取姓名和地址?

使用 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>';
 }

以下成功打印出所有标签。


您正在查找的表格单元格不属于该 HTML 文档。您首先需要了解网络抓取的基础知识,我建议您借一些有关该主题的书籍并阅读它们。

去图书馆的时间到了;)


如果表格单元格在文档中(似乎有所不同,有时是,有时不是),原始示例显示了这一点,这也演示了如何迭代DOM节点列表:

$doc = new DOMDocument();

libxml_use_internal_errors(true);
$doc->loadHTMLFile('Catawba County Legacy Map Server.html');

$tds = $doc->getElementsByTagname('td');
foreach($tds as $td) {
    printf(" * %s\n", $td->textContent);
}

示例输出:

php "test.php" (in directory: /home/hakre/php/test)
 *
 * Real Estate Search - Legacy
 *
 *
 *
 *
 *
 *
 *
 *
 *
 * Map Layers
 * visible
 *
 *
 * Parcels
 *
 * Parcel Annotation
 *
 * Address Points
 *
 * Misc. Lines
 *
 * Structures
 *
 * Contour Lines
 *
 * Soils
 *
 * Townships
 *
 * Water Features
 *
 * Tiles
 *
 * Flood Zone
 *
 * Agricultural District
 *
 * Aerial 2009
 *
 * Aerial 2005
 *
 * Aerial 2002
 *
 * Cities
 *
 * Print the Map  
 * Print Map and Parcel Report  
 * Print the Parcel Report  
 * Assessment Report  
 * List all Owners  
 * Deed History Report
 * Parcel Information:
 * Owner Information:
 * Parcel ID: 372215634301
 * Name: PENLEY TREASURE B
 * Parcel Address: 3152 7TH AV SE 
 * Name2:  
 * City: CONOVER 28613
 * Address: 5508 SWINGING BRIDGE RD
 * LRK(REID): 57186
 * Address2:  
 * Deed Book/Page: 1906/0741 Deed Image
 * City: CONOVER
 * Subdivision: FOREST HGTS
 * State/Zip: NC 28613-7415
 * Lots: 1-4
 *
 * Block: C
 *
 * Last Sale:
 * School Information:
 * Plat Book/Page: 8/119 Plat Image
 * School District: COUNTY
 * Calculated Acreage: 0.31
 * Elementary School: WEBB A MURRAY
 * Tax Map: 167H  04006A
 * Middle School: ARNDT
 * State Road:  
 * High School: ST STEPHENS
 * Township: HICKORY
 * School Map
 *  
 *  
 * Tax/Value Information:  Tax Rates(pdf)
 * Zoning Information:
 * Municipal Tax District:  
 * Zoning District: HICKORY
 * Fire District: HICKORY RURAL
 * Zoning1: OI
 * Tax Account Number:  
 * Zoning2:  
 * Market Building(s) Value: $55,400
 * Zoning3:  
 * Market Land Value: $20,300
 * Zoning Overlay:  
 * Market Total Value: $75,700
 * Small Area:  
 * Year Built/Remodeled: 1959  
 * Split Zoning District 1/2: 0/0
 * Current Tax Bill
 * Zoning Agency Phone Numbers
 * Miscellaneous:
 *  
 * Voter Precinct:P35
 * Firm Panel Date: 9/5/2007
 * Building Permits for this parcel
 * Firm Panel #: 3710372200J
 * WaterShed:  
 * 2010 Census Tract: 011000
 * WaterShed Split:  
 * 2010 Census Block: 3035
 * Parcel Report Data Descriptions
 * Agricultural District:  
 * FAQ's
 * Help
 * GIS Home
Compilation finished successfully.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 DOM 解析 HTML 表 的相关文章

  • 使用 PHP 更新 XML 节点

    我有一个 XML 文件 test xml
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • 查明具有特定 ID 的会话是否已过期

    我正在创建一个上传功能 将用户上传的文件存储在服务器上 并以用户的会话 ID 作为名称 现在 我只想将此文件保留在服务器上 直到该会话处于活动状态 所以 我的问题是 如何根据会话 ID 确定会话是活动的还是过期的 以便在后一种情况下我可以安
  • CSS 内边框?

    我纯粹用 CSS 创建了左侧的按钮 它是一个div 中的一个div 然而 右侧的三个按钮是background属性于img标签 我这样做是为了按照以下说明模拟翻转效果here http kyleschaeffer com best prac
  • 在 mysqli 准备好的语句程序风格中获取最后插入的 id 的正确方法是什么?

    我正在使用 mysqli 准备好的语句在表中插入记录 如下所示 link mysqli connect localhost my user my password world check connection if link printf
  • 使用 IE9、10、11 的 CSS 将比例打印到 50% 等百分比

    Zoom css 属性不适用于 IE9 10 11 观察到打印预览 UI 令人不安 默认比例为 缩小以适合 当我将此比例从 缩小 更改为适合 50 时 页面显示正常 打印预览 任何人都可以帮助我如何使用 CSS 代码将比例设置为 50 为页
  • 错误 #520009 - 帐户受到限制

    我收到 520009 错误 帐户 电子邮件受保护 cdn cgi l email protection被限制 当尝试进行并行付款时 我的代码使用沙箱运行良好 但我切换到实时端点 它开始失败 有问题的帐户是有效的 PayPal 帐户 我使用的
  • 未捕获的异常:数据表编辑器 - 不允许远程托管代码

    我正在尝试使用 Datatables 使用 datatableseditor 来实现 CRUD 操作 但是我收到错误消息 1 未捕获的异常 数据表编辑器 不允许远程托管代码 请参见http editor datatables net有关如何
  • 彩色 var_dump() 和错误

    我怎样才能将样式设置为var dump 功能和PHP错误样式 如下图所示 目前我有下一个观点var dump with pre var dump pre 没有它将全部在一行中 并且只是纯文本的错误 我搜索了一些 PHP 颜色错误 var d
  • IE localStorage 事件失火

    在 Internet Explorer 9 和 10 中 localStorage 实现意外地触发事件 这里有很棒的线索 Chrome 的 localStorage 实现存在错误 https stackoverflow com questi
  • 细胞的 fpdf 对齐

    我正在尝试使用生成 PDFfpdf我有一个小问题 我需要有 2 个单元格 如下所示 Address Line 1 Version Address Line 2 1 0 City 06 05 2011 我尝试过使用MultiCell 但没有运
  • 如何将两个 span 元素一个向左对齐,另一个向右对齐?

    我有两个 span 要素 span style margin right auto 2012 XYZ Corp All Rights Reserved span span style margin left auto Built with
  • Laravel,控制器中的 Auth::user()

    Laravel 框架 为什么我无法在 laravel 项目的控制器中使用 Auth user 查看用户是否已登录 Session 是否未连接到控制器 HomeController php public function isauthoriz
  • 将 echo 和 print 合并到一个语句中

    echo 1 print 2 3 返回 214 脚本如何以 14 结尾 当你这样做时 echo 1 print 2 3 PHP 会做 demo http codepad viper 7 com OfrNrs line op fetch ex
  • 2 使用我的代码在数组中查询

    我使用滑块来显示我的 WordPress 精选文章 它选择一个自定义类别并返回一定数量的帖子 如何将显示的第一篇帖子设为自定义帖子 我可以直接在滑块代码中添加特定帖子的 ID吗使该帖子首先出现 然后是原始查询返回的其他内容 例如 在页面上
  • 如何使用 Javascript 在 html 文件中搜索字符串?

    我有 5 个 html 文件 并且有一个搜索表单 我想用它来搜索这些 html 文件中的文本
  • 伪元素的元素类型是什么?

  • PHP Json_encode 将空格更改为加号 +

    我有一个网络应用程序 我首先将 JSON 数据存储在 cookie 中 然后每 x 秒保存到数据库 它只是打开与服务器的连接 服务器读取 cookie 它实际上并不通过 POST 或 GET 发送任何内容 当我保存到 cookie 时 我的
  • PHP date() 和 strtotime() 返回错误的月份 31 日

    我在用着date and strtotime 函数在下拉列表中显示接下来的 3 个月 PHP代码 echo date m Y strtotime 0 months echo date m Y strtotime 1 months echo
  • 标题的下边框小于宽度

    我需要创建一个下划线效果底部边框小于h2标题的宽度 通常我不上传图片 但我认为这可能有助于进一步解释问题 您可以为此使用伪元素 例子 http jsfiddle net SZ39x pseudo border position relati

随机推荐

  • 异常断点 - LLDB 结果与 GDB

    我专门搜索了这个问题的主题 但没有找到任何与我的经历相近的内容 如果我忽略了答案 请原谅我 我熟悉 GDB 和异常点 断点等 但是下面的 GDB 与 LDB 调试测试让我没有得到合理的回应 全局测试值 Xcode 4 2 1 新的单一窗口项
  • Android推送通知-如何获取设备ID

    我陷入了使用 Google 云通知创建推送通知的过程 我正在做的是我应该获取设备的设备 ID 的部分 以便稍后当我需要发送推送通知时可以使用该设备 ID 所以我有这个代码 GCMRegistrar checkDevice this GCMR
  • 在 Android 中创建选项菜单

    我正在尝试在我的 Android 程序中创建选项菜单 我正在使用以下代码来扩展选项菜单 Override public boolean onCreateOptionsMenu Menu menu super onCreateOptionsM
  • 如何保存单选按钮的状态

    我制作了 4 个单选按钮 并希望在单击其中任何一个按钮时保存状态 然后希望在应用程序中使用该保存的状态 我该怎么做 myOption1 setChecked true myOption2 setChecked true myOption3
  • 将 char 数组转换为字符串

    如何使用 Arduino 将字符数组转换为字符串 char charArray String string String charArray This doesn t work String 类型的初始化与 C 构造函数类似 String
  • 您如何说服您的经理您的项目需要大规模重构? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我作为承包商加入了一个铁路项目 该项目已经进行了一年多 该代码由大约 10 名不同的开发人员编写 其中大多数也是承包商 他们有不同的代码风格 其
  • 将 `do` 表示法 `addStuff` 转换为 `>>=`

    向你学习 Haskell http learnyouahaskell com for a few monads more reader提出了addStuff功能 import Control Monad Instances addStuff
  • 确定红宝石的位置

    如何确定红宝石的位置 你可以试试 gem which rails 获取特定宝石的位置 或者 echo GEM HOME 获取您的宝石的主目录
  • 计算 JavaScript 对象中 true 的数量

    假设我有以下对象 items 1 true 2 false 3 true 4 true 我如何计算正确的数量 在本例中 这是一个返回数字 3 的简单函数 You can reduce物体的values 胁迫trues to 1并将它们添加到
  • Python elasticsearch.helpers.scan 示例

    有人可以提供 python elasticsearch helpers 客户端的扫描 API 示例吗 res elasticsearch helpers scan 如何使用 res 对象获取 elasticsearch 的所有结果 The
  • JavaScript 版本如何与 ECMAScript 版本关联?

    例如 map https developer mozilla org en JavaScript Reference Global Objects Array map是 在 JavaScript 1 6 中实现的 这是 ES5 方法吗 1
  • 如何使 JMX 自定义身份验证起作用?

    我在 JMX 上使用基于密码和访问文件的身份验证 在构建 JMXConnectorServer 时 我使用属性名称并且工作正常 Map
  • 如何在C#中获取HTTP Post数据?

    我正在使用 Mailgun API 有一个部分我需要向他们提供一个 URL 然后他们将通过 HTTP Post 一些数据给我 我提供这个网址 http test com MailGun Webhook aspx http test com
  • Android FM 信号强度

    我想知道 Android 中的 FM 收音机信号强度 为此我是否必须与硬件交互 或者有没有什么API可以直接给出信号强度的值 某些手机 提供 FM 收音机 不管怎样 你必须有一个内置的 FM 调谐器 收音机 为此我必须与 硬件与否 是的 当
  • Matlab OOP 从对象数组访问属性

    Matlab 新手来自 C C 我有一个对象数组 我试图访问数组中每个对象的值并将它们连接到一个变量中 Class sample properties GetAccess public SetAccess public ID Value e
  • 如果存在特定 cookie,则绕过 Akamai 的特定 URL

    如果存在指定的 cookie 即 如果用户登录到特定页面 我希望 Akamai 不缓存某些 URL 我们可以与 Akamai 合作吗 好消息是 我过去曾在 Top Gear 网站 www topgear com uk 上这样做过 其逻辑是
  • 缓存 [n async] 工厂方法的结果,前提是它不会抛出异常

    更新 在 usr 指出我错误地假设后进行了重大修改Lazy
  • 非锚定子字符串搜索:索引与正则表达式?

    我正在编写一些 Perl 脚本 需要进行大量字符串匹配 例如 my str1 this is a test string my str2 test 要查看 str1 是否包含 str2 我发现有两种方法 方法一 使用索引函数 if inde
  • 无法通过任何方法通过speech_recognition python获取音频?

    我正在尝试做SpeechRecognition 3 8 1 https pypi org project SpeechRecognition 听我的声音四天了 我已经在互联网上看到过以下内容 https github com Uberi s
  • 通过 DOM 解析 HTML 表

    我相信页面的标记是我遇到的问题的一部分 所以我想我需要发布源代码和 JSFiddleJSFiddle http jsfiddle net 45xa9 和原来的 我正在尝试获取诸如名称 和地址 之类的信息 从底部的表格 尝试解决方案 我编写了