2009-10-19 14 views
6

मेरे पास 2 बार कई वेबपृष्ठों के स्नैपशॉट हैं। यह निर्धारित करने के लिए एक विश्वसनीय तरीका क्या है कि कौन से वेबपृष्ठ संशोधित किए गए हैं?यह निर्धारित करने के लिए कि क्या वेबपृष्ठ संशोधित किया गया है

मैं आरएसएस फ़ीड की तरह कुछ पर भरोसा नहीं कर सकता, और मुझे डेट टेक्स्ट जैसे मामूली शोर को अनदेखा करने की आवश्यकता है।

आदर्श रूप में मैं एक पायथन समाधान की तलाश में हूं, लेकिन एक अंतर्ज्ञानी एल्गोरिदम भी महान होगा।

धन्यवाद!

+0

क्या आप स्नैपशॉट्स कहने पर छवियों का मतलब रखते हैं? या ऐतिहासिक एचटीएमएल? –

+0

सिर्फ एचटीएमएल - कोई सहायक फाइल नहीं – hoju

+0

क्या आप संरचना (एचटीएमएल टैग) या सामग्री या दोनों को अलग करना चाहते हैं? – elhoim

उत्तर

8

ठीक है, सबसे पहले आपको यह तय करने की ज़रूरत है कि शोर क्या है और क्या नहीं है। शोर को हटाने के लिए आप BeautifulSoup जैसे एचटीएमएल पार्सर का उपयोग कर सकते हैं, परिणाम को सुंदर प्रिंट कर सकते हैं और इसे स्ट्रिंग के रूप में तुलना कर सकते हैं।

यदि आप एक स्वचालित समाधान की तलाश में हैं, तो आप पृष्ठों के बीच अंतर की गणना करने के लिए difflib.SequenceMatcher का उपयोग कर सकते हैं, similarity की गणना करें और इसकी तुलना थ्रेसहोल्ड से करें।

0

कुछ Levenshtein Distance की तरह कुछ आसान हो सकता है यदि आप उस दूरी पर परिवर्तन की दहलीज सेट करते हैं जो आपके लिए सही मात्रा में शोर को अनदेखा करता है।

+0

लेवेनशेटिन दूरी ओ (एन^2) है और अधिकतर पूरे वेबपृष्ठों के लिए अक्षम होने की संभावना अधिक होगी। हालांकि आप इसे अनुक्रमों के लिए सामान्यीकृत कर सकते हैं और शब्दों को वर्णों के बजाय प्रतीकों के रूप में समझ सकते हैं। यह काम कर सकता है। – bayer

3

समाधान वास्तव में निर्भर करता है कि क्या आप किसी विशिष्ट साइट को स्क्रैप कर रहे हैं, या कोई प्रोग्राम बनाने की कोशिश कर रहे हैं जो किसी भी साइट के लिए काम करेगा।

आप देख सकते हैं कि किन क्षेत्रों में अक्सर कुछ इस तरह कर रही है पर बदल जाते हैं:

diff <(curl http://stackoverflow.com/questions/) <(sleep 15; curl http://stackoverflow.com/questions/) 

यदि आपका केवल एक ही साइट के बारे में चिंतित हैं, तो आप समय टिकटों की तरह सामान बाहर फिल्टर करने के लिए कुछ एसईडी भाव बना सकते हैं। छोटे क्षेत्रों के लिए कोई अंतर नहीं दिखाए जाने तक आप दोहरा सकते हैं।

सामान्य समस्या बहुत कठिन है, और मैं स्टार्टर्स के लिए पृष्ठ पर कुल शब्द गणना की तुलना करने का सुझाव दूंगा।

+0

हाँ, मैं एक सामान्य दृष्टिकोण की तलाश में हूं। कुल शब्द गणना एक दिलचस्प (और सीधा) विचार है। – hoju

-1

बस MD5 या SHA1 के साथ फ़ाइलों का स्नैपशॉट लें ... यदि अगली बार जब आप चेक करते हैं तो मूल्य भिन्न होते हैं, तो वे संशोधित होते हैं।

+0

समस्या यह है कि इस प्रकार का दृष्टिकोण शोर से निपट नहीं सकता है। उदाहरण के लिए एक वेबपृष्ठ आज की तारीख प्रदर्शित कर सकता है, जो सामग्री को संशोधित नहीं होने पर भी बदल जाएगा। – hoju

+0

आईसी .. मैंने आपकी आवश्यकता को गलत समझा। – ghostdog74

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

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