2010-05-27 11 views
12

मैं एक पैकेज/मॉड्यूल/समारोह आदि लगभग Arc90 के readability.js का अजगर बराबर है किक्या Python के लिए कुछ भी है जो readability.js की तरह है?

http://lab.arc90.com/experiments/readability

http://lab.arc90.com/experiments/readability/js/readability.js

ताकि मैं इसे कुछ input.html दे सकते हैं के लिए देख रहा हूँ और परिणाम उस HTML पृष्ठ के "मुख्य पाठ" के संस्करण को साफ़ कर दिया गया है। मुझे यह चाहिए कि मैं इसे सर्वर-साइड पर उपयोग कर सकूं (जेएस संस्करण के विपरीत जो केवल ब्राउज़र पक्ष पर चलता है)।

कोई विचार?

पीएस: मैंने राइनो + env.js की कोशिश की है और यह संयोजन काम करता है लेकिन प्रदर्शन अस्वीकार्य है एचटीएमएल सामग्री को साफ़ करने में कुछ मिनट लगते हैं :((अभी भी यह नहीं मिल सका कि इतना बड़ा प्रदर्शन अंतर क्यों है)।

उत्तर

9

मेरी कांटा https://github.com/buriy/python-readability करने का प्रयास करें जो तेज है और नवीनतम जावास्क्रिप्ट संस्करण के सभी सुविधाओं की है:

मैं एक पिप-स्थापना योग्य मॉड्यूल यहाँ के रूप में यह बंडल है।

+0

धन्यवाद, अद्यतन उत्तर –

0

क्यों गूगल वी 8/राइनो के बजाय Node.js उपयोग करने का प्रयास नहीं? यह स्वीकार्य तेजी से होना चाहिए।

+0

क्या env.js V8/Node.js पर चलता है ताकि मेरे पास ब्राउज़र जैसा वातावरण हो? –

+0

यह वही है जो http://flockfeeds.com/ करता है। –

-3

मुझे लगता है कि BeautifulSoup अजगर के लिए सबसे अच्छा HTML पार्सर है। लेकिन आप अभी भी यह पता लगाने की जरूरत है क्या साइट का "मुख्य" भाग है।

यदि आप केवल एक ही डोमेन को पार्स कर रहे हैं, तो यह काफी सीधे है, लेकिन f किसी भी साइट के लिए काम करता है जो एक पैटर्न इंडेक्स इतना आसान नहीं है।

शायद आप python पर readability.js दृष्टिकोण को पोर्ट कर सकते हैं?

1

मैंने अतीत में कुछ शोध किया है और पाइथन में this approach [pdf] को कार्यान्वित करना समाप्त कर दिया है। मैंने जो अंतिम संस्करण लागू किया वह एल्गोरिदम लागू करने से पहले कुछ सफाई करता था, जैसे सिर/स्क्रिप्ट/आईफ्रेम तत्वों, छुपे तत्वों आदि को हटाने, लेकिन यह इसका मूल था।

यहां "लिंक सूची" भेदभावकर्ता के एक (बहुत) निष्पक्ष कार्यान्वयन के साथ एक फ़ंक्शन है, जो टेक्स्ट अनुपात (यानी नेविगेशन बार, मेनू, विज्ञापन इत्यादि) के भारी लिंक वाले तत्वों को निकालने का प्रयास करता है:

def link_list_discriminator(html, min_links=2, ratio=0.5): 
    """Remove blocks with a high link to text ratio. 

    These are typically navigation elements. 

    Based on an algorithm described in: 
     http://www.psl.cs.columbia.edu/crunch/WWWJ.pdf 

    :param html: ElementTree object. 
    :param min_links: Minimum number of links inside an element 
         before considering a block for deletion. 
    :param ratio: Ratio of link text to all text before an element is considered 
        for deletion. 
    """ 
    def collapse(strings): 
     return u''.join(filter(None, (text.strip() for text in strings))) 

    # FIXME: This doesn't account for top-level text... 
    for el in html.xpath('//*'): 
     anchor_text = el.xpath('.//a//text()') 
     anchor_count = len(anchor_text) 
     anchor_text = collapse(anchor_text) 
     text = collapse(el.xpath('.//text()')) 
     anchors = float(len(anchor_text)) 
     all = float(len(text)) 
     if anchor_count > min_links and all and anchors/all > ratio: 
      el.drop_tree() 

परीक्षण कॉर्पस पर मैंने इसका उपयोग वास्तव में काफी अच्छा काम किया, लेकिन उच्च विश्वसनीयता को प्राप्त करने के लिए बहुत सारी tweaking की आवश्यकता होगी।

4

हमने अभी repustate.com पर एक नई प्राकृतिक भाषा प्रसंस्करण API लॉन्च की है। एक आरईएसटी एपीआई का उपयोग करके, आप किसी भी एचटीएमएल या पीडीएफ को साफ कर सकते हैं और केवल टेक्स्ट पार्ट्स प्राप्त कर सकते हैं। हमारा एपीआई मुफ़्त है इसलिए अपने दिल की सामग्री के लिए उपयोग करने में संकोच न करें। और यह अजगर में लागू किया गया है। इसे देखें और परिणामों की तुलना readability.js से करें - मुझे लगता है कि आप पाएंगे कि वे लगभग 100% समान हैं।

+0

हम्म, आशाजनक लग रहा है! ;-) मै उसे करने की एक कोशिश तो करूंगा। क्या कोई कठोर सीमा है?मैं प्रति दिन कितने पेज संसाधित कर सकता हूं, आदि? –

+0

वाह, मैंने अभी कुछ यूआरएल इनपुट करने के लिए आपकी साइट का उपयोग किया है, और यह लेखों को पूरी तरह से निकाला गया है। –

3

hn.pyReadability's blog के माध्यम से। Readable Feeds, एक ऐप इंजन ऐप, इसका उपयोग करता है। http://github.com/srid/readability

+1

यह अब उपलब्ध है की तुलना में पठनीयता का एक बहुत पुराना संस्करण प्रतीत होता है: 0.4 बनाम 1.7.1। अद्यतन के लिए कोई मौका? –

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