मैं मनमानी HTML पृष्ठों से टेक्स्ट निकालने का प्रयास कर रहा हूं। कुछ पेज (जिन पर मेरा कोई नियंत्रण नहीं है) ने HTML या स्क्रिप्ट को विकृत किया है जो इसे कठिन बनाते हैं। इसके अलावा मैं एक साझा होस्टिंग वातावरण पर हूं, इसलिए मैं किसी भी पायथन lib को इंस्टॉल कर सकता हूं, लेकिन मैं सर्वर पर जो कुछ भी चाहता हूं उसे इंस्टॉल नहीं कर सकता।विकृत HTML पृष्ठों से पाठ निकालने के लिए पायथन रणनीति
pyparsing और html2text.py भी विकृत HTML पृष्ठों के लिए काम नहीं कर रहे थे।
# Try using BeautifulSoup 3.0.7a
soup = BeautifulSoup.BeautifulSoup(s)
comments = soup.findAll(text=lambda text:isinstance(text,Comment))
[comment.extract() for comment in comments]
c=soup.findAll('script')
for i in c:
i.extract()
body = bsoup.body(text=True)
text = ''.join(body)
# if BeautifulSoup can't handle it,
# alter html by trying to find 1st instance of "<body" and replace everything prior to that, with "<html><head></head>"
# try beautifulsoup again with new html
अगर BeautifulSoup अभी भी काम नहीं करता है, तो मैं 1 चार को देखने का एक अनुमानी का उपयोग कर का सहारा, पिछले चार:
उदाहरण URL http://apnews.myway.com/article/20091015/D9BB7CGG1.html
मेरे वर्तमान कार्यान्वयन लगभग है निम्नलिखित है (यह देखने के लिए कि क्या वे इसकी कोड लाइन # < की तरह दिखते हैं और लाइन का नमूना लेते हैं और फिर जांचें कि टोकन अंग्रेजी शब्द हैं या संख्याएं हैं। यदि टोकन में से कुछ शब्द या संख्या हैं, तो मुझे लगता है कि लाइन कोड है।
मैं प्रत्येक लाइन का निरीक्षण करने के लिए मशीन लर्निंग का उपयोग कर सकता हूं, लेकिन यह थोड़ा महंगा लगता है और मुझे शायद इसे प्रशिक्षित करना होगा (क्योंकि मुझे असुरक्षित सीखने वाली मशीनों के बारे में इतना कुछ पता नहीं है), और निश्चित रूप से इसे भी लिखें।
कोई सलाह, उपकरण, रणनीतियों का स्वागत किया जाएगा। इसके अलावा मुझे एहसास है कि इसका पिछला हिस्सा बदसूरत है क्योंकि अगर मुझे एक रेखा मिलती है जो कोड रखने का निर्धारण करती है, तो मैं वर्तमान में पूरी लाइन को फेंक देता हूं, भले ही लाइन में वास्तविक अंग्रेजी पाठ की थोड़ी सी मात्रा हो।
खैर, समाधान गैर-विवाद, आपके द्वारा लिंक की गई समाचार-कहानी बहुत अच्छी पढ़ी गई थी। कुछ लोग, हुह? :) –
@ लेसे, मुझे लगता है कि विकृत लोग भी हैं। – Johnny4000