【发布时间】:2017-06-12 01:51:04
【问题描述】:
我知道如何使用下面的代码通过 div id、class 等标签来 xpath 和回显另一个网站的文本。但是,我不知道如何在更精确的条件下执行此操作,例如在尝试抓取和回显一些没有唯一标签标识符(如 div)的文本时。 下面的代码会吐出抓取的数据。
$doc = new DOMDocument;
// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;
// Most HTML Developers are chimps and produce invalid markup...
$doc->strictErrorChecking = false;
$doc->recover = true;
$doc->loadHTMLFile('http://www.nbcnews.com/business');
$xpath = new DOMXPath($doc);
$query = "//div[@class='market']";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo trim($entry->textContent); // use `trim` to eliminate spaces
}
以下面的源代码为例,我想提取值“21,271.97”。但是没有唯一的标签,没有 div id。是否可以通过在
中标识一个永不改变的关键字来提取这些数据,例如“DJIA all time”。
<p>DJIA All Time, Record-High Close: <font color="#0000FF">June 9,
2017</font>
(<font color="#FF0000"><b bgcolor="#FFFFCC"><font face="Verdana, Arial,
Helvetica, sans-serif" size="2">21,271.97</font></b></font>)</p>
想知道是否可以将其替换为 $query = "//div[@class='market']"; $query = "//p['DJIA 所有时间']";
这可能吗?
我还想知道是否使用像 $query = "//p[='DJIA']"; 这样的循环? 可以工作,虽然我不知道如何准确地使用它。 谢谢!!
【问题讨论】: