从RSS中提取锚文本

时间:2011-05-29 05:53:47

标签: php rss web-scraping

民间,

我厌倦了所有的PHP技能,从RSS Feed中提取域名字符串并将每个域名作为数组元素,但都是徒劳的:

这是RSS:http://bulliesatwork.co.uk/master/dev/domp/expdom/domains.php

您是否看到了锚定的域名列表?我只需要提取这些域名,如“abc.co uk”,(.co和.uk之间有一个空格),这可以是 已移除str_replace)。

这是我的第一次尝试:(使用SimpleHTMLDomParser)

require_once('simple_html_dom.php');

$html = file_get_html('http://bulliesatwork.co.uk/master/dev/domp/expdom/domains.php');

$domains = $html->find('div[class="entry"] a', 0);

foreach($domains as $dom)
{        
    echo str_replace(' ', '.', $dom->plaintext);
} 

$html->clear();
unset($html);

这是我对DOM Document的另一次尝试:

$scrapeurl = 'http://bulliesatwork.co.uk/master/dev/domp/expdom/domains.php';         

$keywords = file_get_contents($scrapeurl);

$keywords = json_decode($keywords);

foreach( $keywords->responseData->results as $keyword) 
{    
    echo str_replace("...",".",$keyword->title).'<br/>';  
}

在这两种情况下,DOMDocument都已​​创建,但似乎Document包含除我要提取的域名之外的所有信息。

请帮我解压缩域名。

干杯。

1 个答案:

答案 0 :(得分:1)

试试这个:

$xmlobj=simplexml_load_string(file_get_contents("http://bulliesatwork.co.uk/master/dev/domp/expdom/domains.php"));

$res = $xmlobj->xpath("/rss/channel/item/title");
$names = array();
while(list( , $node) = each($res)) {
  $names[] = (string)$node;
 }

$names包含您想要的所有名称:您需要自己进行字符串替换。