我們正在構建某種類型的digg網站並希望自動獲取有限的文本(2-3個句子)。它可以是文章的最後3個句子,如果那會更容易。在momemt中,我們可以在沒有問題的情況下獲取網頁內容,但想要使通用腳本獲得幾個句子。我們希望避免爲每個想要獲得內容的網站製作自定義腳本。如何從網頁上的文本正文中提取前幾句話
我在想按點找到文本塊。在近距離找到點,而不是在點周圍找文字。這是個不錯的主意。有人有一些其他的想法如何提取正文的文本。
我們不想刮滿全部內容。
謝謝。
我們正在構建某種類型的digg網站並希望自動獲取有限的文本(2-3個句子)。它可以是文章的最後3個句子,如果那會更容易。在momemt中,我們可以在沒有問題的情況下獲取網頁內容,但想要使通用腳本獲得幾個句子。我們希望避免爲每個想要獲得內容的網站製作自定義腳本。如何從網頁上的文本正文中提取前幾句話
我在想按點找到文本塊。在近距離找到點,而不是在點周圍找文字。這是個不錯的主意。有人有一些其他的想法如何提取正文的文本。
我們不想刮滿全部內容。
謝謝。
您可以查找文檔中標記較少且垂直空白較少的大部分。下載頁面的源代碼並使用strip_tags()
刪除任何標記。然後,您可以使用正則表達式搜索連續五個句子。
下面是一個示例腳本。它使用一個不包含的類(curl_multi函數的抽象),但是這個類與你的問題並不相關。
<?php
require_once("./../MultipleRequester.php");
$requester = new MultipleRequester();
$requester->addGetRequest('test', 'http://www.businessweek.com/news/2011-08-24/gold-tumbles-most-since-march-2008-as-demand-for-haven-wanes.html');
$requester->execute();
$content = $requester->getContent('test');
$plainText = strip_tags($content);
$search = preg_match('/(\h{0,2}\v{0,2}\h{0,2}[A-Z]{1}[A-z0-9 ,\'")(.$]{10,1000}\.){2,5}/', $plainText, $matches);
if($search)
print trim($matches[0]);
else
print "Could not extract anything.";
print "\n\n";
?>
此打印:
美元兌六種主要貨幣市場擔心美國聯邦儲備委員會主席本·伯南克是否將在本週表示,央行願意提供更多的猜測刺激經濟。央行行長本週在懷俄明州的傑克遜霍爾會面,討論美國的經濟復甦問題。
對於標記其內容的網站,您可能仍然遇到問題。您可能希望使正則表達式更加寬鬆,尤其是對空白字符。
正則表達式有點混亂,但您可以調整它或自己寫。
對不起,你的問題不是很清楚 - 你想知道如何只下載頁面的一部分?或者你想知道如何執行字符串操作,只需挖掘幾句話? – JonnyReeves
對不起,沒有解釋。我需要字符串操作方面的幫助。我從網頁中獲取內容,去掉HTML,然後需要從主文本文本中得到2-3個句子。不知道該怎麼做。 – Croky
好吧,我建議你用你的問題來回答你的問題並編輯標題;例如,'scrape'用在錯誤的上下文中,你的問題更多的是'如何從文本體中提取第一個X句子?' – JonnyReeves