【问题标题】:How to parse a third table in a webpage using simple html dom parser in php如何在 php 中使用简单的 html dom 解析器解析网页中的第三个表
【发布时间】:2013-08-17 00:00:59
【问题描述】:

我的网页包含 8 个表格。我要解析第三张表

我的第 1、3、5 和 7 个表格的页面来源:(全部包含 80 个元素)

<table cellpadding="0" cellspacing="0" width="100%" border="0" class="cricket-performanceTable">

我的第 2、4、6、8 表的页面来源:(元素因比赛而异)

<table cellpadding="0" cellspacing="0" width="100%" border="0" class="cricket-performanceTable noBorderTop">

所以我是这样解析的:

 $name = $html->find('div[class=cricket-accorContent] table[class=cricket-performanceTable] td');

它工作到第一个表 ($name[80])。

如果我打印 ($name[81]) 它显示第二个表的第一个元素。但我想打印第三个表的第一个元素

尽管table[class= ] 不同。第一桌table[class=cricket-performanceTable] 第二张桌子:table[class=cricket-performanceTable noBorderTop]

如何解析第三个表?

【问题讨论】:

  • print $name[161] 怎么样?
  • 为什么不使用 DOMDocument 和 DOMXPath? //table[3]//td[1] 你就完成了,而且速度更快。

标签: php html parsing


【解决方案1】:

试试这个:

$src = '<div class="cricket-accorContent">
<table cellpadding="0" cellspacing="0" width="100%" border="0" class="cricket-performanceTable"><tr><td>11</td><td>12</td></tr></table>
<table cellpadding="0" cellspacing="0" width="100%" border="0" class="cricket-performanceTable noBorderTop"><tr><td>21</td><td>22</td></tr></table>
<table cellpadding="0" cellspacing="0" width="100%" border="0" class="cricket-performanceTable"><tr><td>31</td><td>32</td></tr></table>
<table cellpadding="0" cellspacing="0" width="100%" border="0" class="cricket-performanceTable noBorderTop"><tr><td>41</td><td>42</td></tr></table>
</div>
';

$html = str_get_html($src);

$thirdTable = $html->find('div[class=cricket-accorContent] table', 2);
$firstTD = $thirdTable->find('td', 0)->plaintext;
$secondTD = $thirdTable->find('td', 1)->plaintext;

echo '-' . $firstTD . '-';
echo '-' . $secondTD . '-';

输出:

-31--32-

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2011-03-22
    • 2012-11-14
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多