请关于Xpath的帮助......
以下脚本将使用Xpath
抓取URL的主体<?php
//sentimen order
if (PHP_SAPI != 'cli') {
echo "<pre>";
}
require_once __DIR__ . '/../autoload.php';
$sentiment = new \PHPInsight\Sentiment();
require_once 'Xpath.php';
$startUrl = "http://news.sky.com/story/1445575/suspect-held-over-shooting-of-ferguson-police/";
$xpath = new XPATH($startUrl);
// We starts from the root element
$query = '/html/body/div[2]/div[3]/article/div/div[2]/div[2]/p[3]';
$strQuery = $xpath->query($query);
$strNode = $strQuery->item(0)->nodeValue;
$result = array($strNode);
foreach ($result as $string) {
// calculations:
$scores = $sentiment->score($string);
$class = $sentiment->categorise($string);
// output:
echo "Strings $string \n";
echo "Dominant: $class, scores: ";
print_r($scores);
echo "\n";
}
上面的脚本运行良好,除了数组循环... Xpath不会抓取所有内容,只能抓住主体的第一行..
我认为问题在于数组循环和foreach ......
任何人都可以帮助解决这个循环....
答案 0 :(得分:0)
您只能获取一个段落。另外,你只将一个字符串放入数组中。
你可能正在寻找更多这方面的东西:
foreach ($xpath->query('
//header/h1
|//header/p
|//header//p[@class="last-updated__text"]
|//div[@class="story__content"]/p') as $p) {
echo string_normalize($p->textContent), "\n\n";
}
function string_normalize($string)
{
return preg_replace('~\s+~u', ' ', trim($string));
}
输出:
射击弗格森警察:嫌疑人被起诉
检察官说,这名20岁的嫌犯声称他在与其他人的纠纷中开枪,并没有针对警方。05:19,英国,2015年3月16日(星期一)
天空新闻美国队
上周在密苏里州弗格森的两名警察开枪射击和伤人事件,一名嫌犯被指控。 圣路易斯县检察官罗伯特麦卡洛克在新闻发布会上告诉被告是20岁的杰弗里威廉姆斯。 他说,当地居民的嫌疑人在第一级学位中面临两项攻击罪。 周六晚被捕的威廉姆斯也被控从车上开枪。&#34;他承认自己参与了射击,并且#34;麦卡洛克先生告诉记者。
...