2012-07-30 16 views
6

मैंने this question देखा है, लेकिन यह वास्तव में मुझे संतुष्ट नहीं करता है कि मैं क्या देख रहा हूं। उस प्रश्न का उत्तर या तो था: मेटा विवरण टैग से उठाओ, और दूसरा उस लेख के लिए एक अंश उत्पन्न कर रहा था जिसमें आपके पास पहले से ही शरीर है।पीएचपी स्क्रैप अनुच्छेद उद्धरण जैसे पठनीयता

मैं जो करना चाहता हूं वह वास्तव में आलेख के पहले कुछ वाक्यों को प्राप्त करता है, जैसे पठनीयता। इसके लिए सबसे अच्छी विधि क्या नहीं है? एचटीएमएल पार्सिंग? यहां मैं वर्तमान में उपयोग कर रहा हूं, लेकिन यह बहुत विश्वसनीय नहीं है।

function guessExcerpt($url) { 
    $html = file_get_contents_curl($url); 

    $doc = new DOMDocument(); 
    @$doc->loadHTML($html); 

    $metas = $doc->getElementsByTagName('meta'); 

    for ($i = 0; $i < $metas->length; $i++) 
    { 
     $meta = $metas->item($i); 
     if($meta->getAttribute('name') == 'description') 
      $description = $meta->getAttribute('content'); 

    } 

    return $description; 
} 

function file_get_contents_curl($url) { 
    $ch = curl_init(); 

    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

    $data = curl_exec($ch); 
    curl_close($ch); 

    return $data; 
} 
+0

आप [php-readability] (http://code.fivefilters.org/php-readability/) – j0k

उत्तर

8

यहां PHP में पढ़ने योग्यता का एक बंदरगाह है: https://github.com/feelinglucky/php-readability। कर के देखो। निष्कर्षण परिणाम पठनीयता के समान होगा (क्योंकि यह पठनीयता की एल्गोरिदम लागू करता है)।

require 'lib/Readability.inc.php'; 

$html = file_get_contents_curl($url); 

$Readability  = new Readability($html, $html_input_charset); // default charset is utf-8 
$ReadabilityData = $Readability->getContent(); 

$title = $ReadabilityData['title']; 
$content = $ReadabilityData['content']; 

फिर आप अंश के रूप में $content से कुछ वाक्यों का उपयोग कर सकते हैं।

+1

पर भी एक नज़र डाल सकते हैं कोई भी जानता है कि एक रिलावंट थंबनेल/छवि को कैसे स्क्रैप करना है? पठनीयता वास्तव में वही करता है जो मैं खोज रहा था। – Swivel

+1

@Swivelgames क्या आपको पता चला कि थंबनेल कैसे प्राप्त करें? मैं कुछ ऐसा करना चाहता हूं – hellomello

+2

@andrewliu एक थंबनेल प्राप्त करने के लिए उपयोग की जाने वाली विधि एक छोटा सा कोड है। मैंने 'preg_match_all' का उपयोग'//i' के साथ किया और सभी छवियों के साथ एक सरणी बनाई। उपर्युक्त उदाहरण में '$ url' को पार्स करके, मैं आधारभूत पथ को निर्धारित करके सापेक्ष छवि पथ को पूर्ण पथ में बदल सकता था। फिर मैं उपयोगकर्ता को चुनने के लिए पूर्ण छवि पथ के साथ एक सरणी प्रस्तुत करता हूं। आप थंबनेल बनाने और उपयोगकर्ता को प्रदर्शित करने के लिए वेब सर्वर पर सहेजने के लिए एक सरल स्क्रिप्ट का उपयोग कर सकते हैं, या HTML का उपयोग करके स्केल कर सकते हैं। ** एक नया प्रश्न पोस्ट करें और यहां लिंक पेस्ट करें, और फिर मैं आपको विशिष्ट कोड दे सकता हूं। ** – Swivel

संबंधित मुद्दे