複数のネストされたテーブル構造内から特定のリンク属性を抽出しようとしています。ドキュメントの形式が古いため、ページのデザインに table 要素が多用されていることが説明できます。
DOMXPath を使用して解析しようとしている関連ドキュメントは次のとおりです:: 幅が 100% の各テーブルには、同じレベルのネストされた子 (tbody、tr、td、a、div など) があります。
<table width="1000px">
<tbody>
<tr></tr>
<tr>
<td>
<br>
<span></span>
<span></span>
<div></div>
<div>
<div></div>
<div>
<center></center>
<hr>
<table width="100%"></table>
<table width="100%">
<tbody>
<tr>
<td>
<a name="A"></a>
<div style="width: 230px;">
<a href="owlbook/manufacturer.aspx?manufacturerId=124">Owl Chant Book</a>
<br>
</div>
</td>
</tr>
</tbody>
</table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
<table width="100%"></table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
そして、これが私がそれを解析するために使用しているコードです。href の値と、div の奥深くにネストされたアンカーの textValue を取得しようとしています。
public function parseManufacturerNodes($results) {
error_reporting(0);
$this->dom = new DOMDocument();
$this->dom->loadHTML($results);
$this->domQuery = new DOMXPath($this->dom);
$this->nodes = $this->domQuery->query("//table/tbody/tr/td/div/div/div/div/table/tbody/tr/td/div");
var_dump($this->nodes);
foreach ($this->nodes as $this->eachNodes) {
echo $this->eachNodes;
}
error_reporting(1);
}
これはまったく機能しません。ドキュメント構造に一致するようにクエリパラメーターを変更しようとしましたが、役に立ちませんでした。var_dump が戻ります。
object(DOMNodeList)#44 (1) { ["length"]=> int(0) }
幅が 100% の内部テーブル内の各 div からアンカー属性を抽出するにはどうすればよいですか。この場合、どちらが href="owlbook/manufacturer.aspx?manufacturerId=124" と textValue = Owl Chant Book を返しますか
実行可能な解決策を見つけるのに進歩しているとは思わないので、何らかの助けを提供してください。
ありがとう、マックス