【发布时间】:2011-08-11 17:28:06
【问题描述】:
<body class="en-us"> <div id="wrapper">
<div id="content">
<div class="content-top">
<div class="content-bot">
<div id="profile-wrapper" class=
"profile-wrapper profile-wrapper-horde">
<div class="profile-sidebar-anchor">
<div class="profile-sidebar-outer">
<div class="profile-sidebar-inner">
<div class="profile-sidebar-contents">
<div class="profile-sidebar-crest">
<a href="/wow/en/character/some-server/sometoon/" rel="np" class="profile-sidebar-character-model" style="">
</a>
<div class="profile-sidebar-info">
<div class="name">
<a href="/wow/en/character/some-server/sometoon/"
rel="np">Glitchshot</a>
</div>
<div class="under-name color-c8">
<span class="level"><strong>85</strong></span>
<a href="/wow/en/game/race/somerace" class="race">somerace</a>
<a href="/wow/en/game/class/someclass" class="class">someclass</a>
</div>
<div class="guild">
<a href="/wow/en/guild/some-server/someguild/?character=sometoon">
Some Guild</a>
</div>
<div class="realm">
<span id="profile-info-realm" class="tip"
data-battlegroup="Stormstrike">Black
Dragonflight</span>
</div>
</div>
</div>
<ul class="profile-sidebar-menu" id="profile-sidebar-menu">
<li><a href=
"/wow/en/character/some-server/sometoon/" class=
"back-to" rel="np"><span class="arrow"><span class=
"icon">Character Summary</span></span></a></li>
<li class="root-menu"><a href=
"/wow/en/character/some-server/sometoon/achievement"
class="back-to" rel="np"><span class=
"arrow"><span class=
"icon">Achievements</span></span></a></li>
<li class=" active"><a href=
"/wow/en/character/some-server/sometoon/achievement#summary"
class="" rel="np"><span class="arrow"><span class=
"icon">Achievements</span></span></a></li>
<li class=""><a href=
"/wow/en/character/some-server/sometoon/achievement#92"
class="" rel="np"><span class="arrow"><span class=
"icon">General</span></span></a></li>
我知道我在这里发布了很多无用的代码,但希望你们了解一下 DOM 会是什么样子。
从这里:
<a href="/wow/en/character/some-server/sometoon/achievement#92" class="" rel="np"><span class="arrow"><span class="icon">General</span></span></a>
我想提取这个:
/wow/en/character/some-server/sometoon/achievement#92
来自已发布标记中的最后一个锚点。
我已经阅读了尽可能多的关于如何使用 xpath 查询来提取所需信息的内容,但我显然遗漏了一些东西。以下是我认为应该有效但无效的查询。
<?php
$query = '*/ul[@class=profile-sidebar-menu]/ul/li[3]/ul/li[1]/a/@href';
echo $query . "<br>";
$achievementSubCategory = $xpath->query($query);
$achiSubArray = array("URL" => $achievementSubCategory->item(0)->nodeValue);
var_dump($achiSubArray);
// Produces array(1) { ["URL"]=> NULL } which should look something more like:
// array(1) { ["URL"]=> /wow/en/character/some-server/sometoon/achievement#92 }
?>
提前感谢您的帮助和建议
【问题讨论】:
-
如果你知道它的格式,为什么你需要提取那个确切的链接?为什么不自己生成呢?
-
我和@Dalton Conley 在一起。您可以使用 javascript 从 DOM 中轻松提取链接。
-
我正在尝试从 wow 军械库中提取数据,我需要提取的数据的链接位于静态位置。我知道我可以使用 javascript 来实现这一点,但我正在尝试在服务器端进行,以消除对基本功能的 javascript 需求
-
另外,我不需要那个链接,但如果我能拉出那个链接,那么我可以循环浏览后面的其余链接。基本上有几个类别是静态定位的。我将这些类别放在一个数组中,然后循环遍历提取子类别的类别。
-
请显示您正在处理的所有 html。