【问题标题】:php scrape: echo the third word onlyphp scrape:仅回显第三个单词
【发布时间】:2017-06-16 04:48:50
【问题描述】:

所以我正在尝试使用 php 抓取可能性,我想更准确地了解正在回显的数据。下面的代码实现了这个输出:DJIA All Time, Record-High Close: June 14, 2017 (21,374.56)

<?php

// weather forecast los angeles
$doc = new DOMDocument;

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


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

$doc->loadHTMLFile('https://finance.yahoo.com/quote/%5EGSPC?p=%5EGSPC');

$xpath = new DOMXPath($doc);

$query = "//span[@class='Trsdu(0.3s) Fw(b) Fz(36px) Mb(-4px) D(ib)']";

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

有没有人知道我可以在哪里指定只输出在抓取过程中出现的第三个单词/值的可能方式。所以在上面的例子中,只有“时间”最终会得到回显。当我说单词/值时,我想我将其识别为有一个 " " 空格。

这可能吗?对不起,我缺乏 php 技能,对此很陌生。如果我能够在被回显的内容中得到这个精确的hwoever,那将带来很多可能性。

最好的,-威尔逊

【问题讨论】:

  • 你好,2,432.46 这是你的输出,你想要什么?
  • 我希望能够选择输出中出现的第三个单词/值。第三个字是“时间”。如果我选择 2,432.46,这很好,我相信这将是第九个值/字。我用“”空格来定义这个

标签: php echo scrape


【解决方案1】:

您可以使用explode() php函数,用于将字符串转换为数组。

$entries = $xpath->query($query);
foreach ($entries as $entry) {
     $result = trim($entry->textContent); 
     $ret_ = explode(' ', $result);
    echo $ret_[2];

}

Another one

<?php

$text = "DJIA All Time, Record-High Close: June 14, 2017 (21,374.56)";

$text_array = explode(' ', $text);

 print_r($text_array);
 echo $text_array[2];
?>

【讨论】:

  • NVM 已修复!刚刚取出线路 echo $text_array[2]; // 结果是一个
  • 谢谢萨罗杰!你超级快速,超级乐于助人。很高兴现在能真正探索这一点。
  • 很高兴它帮助了你。
  • 一件快速的事情,我能够在输出中个性化的所有值和单词,除了最后一个值:(21,374.56) 刚刚出现空白。知道可能是什么原因造成的吗?嗯可能和括号有关,很明显(21,是不是因为空间的缘故,它是自己的价值。我想知道关于括号是否有任何解决方法,以防我将来遇到这种情况
  • 如果你有空间,那么它将分离到数组的另一个索引。如果它没有任何空间,那么它将在数组的最后一个索引中给出整个字符串。您可以在线查看(writephponline.com),我举个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
相关资源
最近更新 更多