我怎样才能抓取网站中的所有文本,我不只是指 ctrl+a/c。我希望能够从一个网站(以及所有相关的页面)中提取所有文本,并使用它来建立该网站的词的一致性。有任何想法吗?
问问题
365 次
1 回答
1
我对此很感兴趣,所以我写了解决方案的第一部分。
由于方便的 strip_tags 函数,代码是用 PHP 编写的。它也很粗糙和程序化,但我觉得在展示我的想法。
<?php
$url = "http://www.stackoverflow.com";
//To use this you'll need to get a key for the Readabilty Parser API http://readability.com/developers/api/parser
$token = "";
//I make a HTTP GET request to the readabilty API and then decode the returned JSON
$parserResponse = json_decode(file_get_contents("http://www.readability.com/api/content/v1/parser?url=$url&token=$token"));
//I'm only interested in the content string in the json object
$content = $parserResponse->content;
//I strip the HTML tags for the article content
$wordsOnPage = strip_tags($content);
$wordCounter = array();
$wordSplit = explode(" ", $wordsOnPage);
//I then loop through each word in the article keeping count of how many times I've seen the word
foreach($wordSplit as $word)
{
incrementWordCounter($word);
}
//Then I sort the array so the most frequent words are at the end
asort($wordCounter);
//And dump the array
var_dump($wordCounter);
function incrementWordCounter($word)
{
global $wordCounter;
if(isset($wordCounter[$word]))
{
$wordCounter[$word] = $wordCounter[$word] + 1;
}
else
{
$wordCounter[$word] = 1;
}
}
?>
我需要这样做来为可读性 API 使用的 SSL 配置 PHP。
解决方案的下一步将是在页面中搜索链接并以智能方式递归调用它以提高相关页面的要求。
此外,上面的代码只是给出了一个字数的原始数据,您希望对其进行更多处理以使其有意义。
于 2013-08-04T01:59:23.937 回答