【问题标题】:php scraping a meta itemprop tagphp 抓取元 itemprop 标记
【发布时间】:2017-06-29 23:05:19
【问题描述】:

我正在测试我的抓取能力,尝试从任何类型的标签中输出值。遇到一些我不确定如何工作的东西,它包含在 meta itemprop 标记中。

源代码如下所示,我试图在元 itemprop 标记名称“priceChangePercent”下抓取并输出 -0.205。 (见底线)。 *根据一天中的时间,该值是随机的。

 <meta itemprop="name" content="USDJPY Spot Exchange Rate" /> <meta     
itemprop="url" content="https://www.bloomberg.com/quote/USDJPY:CUR" />   
<meta itemprop="tickerSymbol" content="USDJPY" /> <meta  
itemprop="exchange" content="" /> <meta itemprop="price" content="111.95" 
/> <meta itemprop="priceChange" content="-0.23" /> <meta 
itemprop="priceChangePercent" content="-0.205" />

目前在有效的代码中,我正在识别这样的内容:

$query = "//div[@class='change-container']";

效果很好。

我需要具体修改什么?我试过了

$query = "//meta[@itemprop='priceChangePercent']";

运气不好。这来自这个网址:https://www.bloomberg.com/quote/USDJPY:CUR

非常感谢。

我的完整代码:

<?php 

  // this is yearly u.s. stock data
$doc = new DOMDocument;

// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;

 $doc->strictErrorChecking = false;
$doc->recover = true;

 $doc->loadHTMLFile('https://www.bloomberg.com/quote/USDJPY:CUR');

 $xpath = new DOMXPath($doc);

$query = "//meta[@itemprop='priceChangePercent']";

$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo trim($entry->textContent);  // use `trim` to eliminate spaces


}

?>

【问题讨论】:

  • 这可能是微不足道的,但双引号有效吗?否则 xpath 看起来是正确的。
  • 哈,错字? itempromp vs itemprop m
  • 其实只是在这里打错了,我用正确的拼写测试了它。感谢您指出这一点。编辑过的帖子。 @scuzzy 我会引用引号
  • Xpath 看起来不错,请参阅 3v4l.org/Bo7Fg - 错误很可能在其他地方(目前不在问题中)。
  • @scuzzy 让它适应了这一变化。精彩的!谢谢。

标签: php xpath output scrape


【解决方案1】:

获取您的代码示例:

echo trim($entry->textContent);

我已将其修改为:

echo trim($entry->getAttribute('content'));

您的代码似乎正在获取元标记的文本内容,它没有自己的文本内容,只有属性内容。

【讨论】:

    猜你喜欢
    • 2012-12-24
    • 2017-07-28
    • 2014-07-16
    • 2018-05-25
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多