2011-01-12 19 views
38

एक समाचार आलेख वेबपृष्ठ (किसी भी प्रमुख समाचार स्रोत जैसे समय या ब्लूमबर्ग) से देखते हुए, मैं उस पृष्ठ पर मुख्य लेख सामग्री की पहचान करना चाहता हूं और अन्य विविध तत्वों को बाहर निकालना चाहता हूं जैसे विज्ञापन, मेनू, साइडबार, उपयोगकर्ता टिप्पणियां।वेब स्क्रैपिंग - वेबपृष्ठ पर मुख्य सामग्री की पहचान कैसे करें

ऐसा करने का एक सामान्य तरीका क्या है जो अधिकांश प्रमुख समाचार साइटों पर काम करेगा?

डेटा खनन के लिए कुछ अच्छे उपकरण या पुस्तकालय क्या हैं? (अधिमानतः पायथन आधारित)

+5

देखते हैं कि कैसे 'Readability' बुकमार्क कार्यान्वित किया जाता है http://lab.arc90.com/experiments/readability/ – jfs

+0

एक यह ब्राउज़र जो ऑनलाइन विज्ञापनों के लिए एक बड़ा खतरा होगा। –

+2

मूल बुकमार्कलेट का कोड यहां है: http://code.google.com/p/arc90labs-readability/source/browse/ 'पठनीयता' अब एक सेवा है और यह कोड उपलब्ध नहीं है। – lsh

उत्तर

4

ऐसा करने का कोई तरीका नहीं है जो काम करने की गारंटी है, लेकिन एक रणनीति जो आप उपयोग कर सकते हैं वह है कि तत्व के अंदर सबसे अधिक दिखाई देने वाले पाठ को ढूंढने का प्रयास करें।

4

उस पृष्ठ पर आरएसएस फ़ीड (<link type="application/rss+xml" href="..."/>) निकालने के लिए और अधिक उपयोगी हो सकता है और मुख्य सामग्री प्राप्त करने के लिए फ़ीड में डेटा को पार्स कर सकता है।

+0

एनबी: एटीओएम फ़ीड के लिए 'टाइप = "एप्लिकेशन/एटम + एक्सएमएल" ' – nedk

+0

एक अच्छा विचार है, लेकिन इसे हिट या मिस किया जा सकता है, क्योंकि बहुत सी फीड में केवल एक लेख सारांश शामिल होता है। जो समझ में आता है, क्योंकि अधिकांश समाचार साइटों का बिंदु आपको विज्ञापन देखने के लिए है, जो आप आमतौर पर आरएसएस रीडर के अंदर नहीं होंगे। – Cerin

0

मैं इसे वेब पेज से स्क्रैप करने की कोशिश नहीं करता - बहुत सी चीजें इसे गड़बड़ कर सकती हैं - लेकिन इसके बजाय यह देखने के लिए कि कौन सी वेबसाइटें आरएसएस फ़ीड प्रकाशित करती हैं। उदाहरण के लिए, गार्जियन आरएसएस फ़ीड उनके प्रमुख लेख से पाठ के सबसे है:

http://feeds.guardian.co.uk/theguardian/rss

मैं नहीं जानता कि यदि टाइम्स (लंदन टाइम्स, नहीं NY) में से एक है, क्योंकि यह एक paywall पीछे है। उस के साथ शुभकामनाएं ...

+0

अधिकांश आरएसएस फ़ीड जो मैंने देखा है केवल पूर्ण लेखों के संक्षिप्त सार तत्व हैं। पठनीयता के लिए – kefeizhou

27

ऐसा करने के कई तरीके हैं, लेकिन कोई भी हमेशा काम नहीं करेगा। यहाँ दो सबसे आसान:

  • अगर यह वेबसाइटों की एक में जाना जाता परिमित सेट है: यदि आपके स्क्रेपर में दिए गए साइट के लिए प्रिंट यूआरएल के लिए सामान्य यूआरएल से प्रत्येक यूआरएल परिवर्तित (वास्तव में साइटों में सामान्यीकृत नहीं किया जा सकता)
  • Arc90 पठनीयता एल्गोरिदम का उपयोग करें (संदर्भ कार्यान्वयन जावास्क्रिप्ट में है) http://code.google.com/p/arc90labs-readability/। इस एल्गोरिदम का संक्षिप्त संस्करण यह है कि यह उनके भीतर पी टैग के साथ divs के लिए देखता है। यह कुछ वेबसाइटों के लिए काम नहीं करेगा लेकिन आम तौर पर बहुत अच्छा है।
+3

+1। चूंकि पठनीयता लेख पृष्ठों के लिए सबसे अच्छा काम करती है क्योंकि होमपेजों के विपरीत यह आरएसएस फ़ीड लेख आलेखों के लिए पार्स किए जाने पर सबसे अच्छा काम करेगा। – nedk

+1

मुझे पठनीयता एल्गोरिदम के पायथन बंदरगाहों के लिंक जोड़ना चाहिए था: http://github.com/search?type=Repositories&language=python&q=readability&repo=&langOverride=&x=22&y=9&start_value=1 – gte525u

+0

मुझे आश्चर्य है कि मैंने क्यों नहीं किया ' पहले यह खोज नहीं है। यह पिछले विज्ञापन-होक्स विधियों की तुलना में शानदार था, जिसे मैंने स्वयं विकसित किया था। – Pankaj

3

शोर से 'असली' सामग्री को अलग करने का एक और संभावना है एक HTML पृष्ठ के कुछ हिस्सों के measuring HTML density कर रहा है।

आपको "असली" सामग्री निकालने के लिए थ्रेसहोल्ड के साथ थोड़ा सा प्रयोग करने की आवश्यकता होगी, और मुझे लगता है कि आप दिलचस्प सामग्री की पहचान करने के बाद HTML सेगमेंट की सटीक सीमा निर्दिष्ट करने के लिए हेरिस्टिक को लागू करके एल्गोरिदम को बेहतर बना सकते हैं।

अपडेट: बस ऊपर दिया गया यूआरएल पता चला है कि अभी काम नहीं करता है; here is an alternative link archive.org के कैश किए गए संस्करण में।

8

कुछ समय पहले मैंने इस कार्य के लिए simple Python script लिखा था। यह डीओएम में उनकी गहराई के आधार पर समूह टेक्स्ट ब्लॉक के लिए एक ह्युरिस्टिक का उपयोग करता है। अधिकांश पाठ वाले समूह को मुख्य सामग्री माना जाता है। यह सही नहीं है, लेकिन आमतौर पर समाचार साइटों के लिए काम करता है, जहां लेख आम तौर पर टेक्स्ट का सबसे बड़ा समूह होता है, भले ही एकाधिक div/p टैग में टूट जाए। python webarticle2text.py <url>

+0

लिंक अब –

+0

@ MPękalski काम नहीं करता है, मुझे बताने के लिए धन्यवाद। मैंने लिंक अपडेट किया है। – Cerin

8

Diffbot प्रदान करता है एक नि: शुल्क (10:

आप की तरह स्क्रिप्ट का उपयोग होगा।000 यूआरएल) ऐसा करने के लिए एपीआई, अगर उस दृष्टिकोण आप के लिए क्या देख रहे है पता नहीं है, लेकिन यह किसी को http://www.diffbot.com/

+0

अच्छा, मैं कुछ ऐसा करने के बारे में सोच रहा हूं जैसे कि खुद को =) –

6

मदद कर सकता है जावा में एक समाधान के लिए https://code.google.com/p/boilerpipe/ पर एक नजर है:

बॉयलरपाइप लाइब्रेरी वेब पेज की मुख्य पाठ्य सामग्री के आस-पास अधिशेष "अव्यवस्था" (बॉयलरप्लेट, टेम्पलेट्स) का पता लगाने और निकालने के लिए एल्गोरिदम प्रदान करती है।

लाइब्रेरी पहले से ही सामान्य कार्यों के लिए विशिष्ट रणनीतियों प्रदान करती है (उदाहरण के लिए: समाचार आलेख निष्कर्षण) और व्यक्तिगत समस्या सेटिंग्स के लिए भी आसानी से बढ़ाया जा सकता है।

लेकिन वहाँ भी इस यहाँ उपलब्ध चारों ओर एक अजगर आवरण है:

https://github.com/misja/python-boilerpipe

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