2008-09-10 20 views
6

मैं सरल पायथन रेगेक्सप का उपयोग करके फुटबॉल (सॉकर) वेब पेज से कुछ जानकारी स्क्रैप करना चाहता हूं। समस्या यह है कि पहले चैप, ÄÄRITALO जैसे खिलाड़ी & # 1 9 6 के रूप में बाहर आते हैं; & # 1 9 6; रिटालो!
यही है, एचटीएमएल विशेष वर्णों के लिए मार्कअप से बच निकलता है, जैसे & # 1 9 6;एक वेब पेज से अंतरराष्ट्रीय पात्र प्राप्त करना?

क्या सही पायथन स्ट्रिंग में एचटीएमएल पढ़ने का एक आसान तरीका है? अगर यह एक्सएमएल/एक्सएचटीएमएल था तो यह आसान होगा, पार्सर इसे करेगा।

उत्तर

7

मैं HTML स्क्रैपिंग के लिए BeautifulSoup की अनुशंसा करता हूं। तुम भी तो की तरह, इसी यूनिकोड वर्ण के लिए HTML संस्थाओं कन्वर्ट करने के लिए यह बताने की आवश्यकता:

>>> from BeautifulSoup import BeautifulSoup  
>>> html = "<html>&#196;&#196;RITALO!</html>" 
>>> soup = BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES) 
>>> print soup.contents[0].string 
ÄÄRITALO! 

(यह अच्छा होगा अगर मानक codecs मॉड्यूल इस के लिए एक कोडेक, तुम कर सकते हो कि इस तरह के शामिल "some_string".decode('html_entities') लेकिन दुर्भाग्य से यदि ऐसा नहीं होता)

संपादित करें: एक अन्य समाधान: अजगर डेवलपर फ्रेड्रिक Lundh (ElementTree के लेखक, अन्य बातों के अलावा) अपनी वेबसाइट है, जो दशमलव, हेक्स और नामित संस्थाओं के साथ काम करता है पर a function to unsecape HTML entities है (BeautifulSoup होगा हेक्स वाले लोगों के साथ काम नहीं करते हैं)।

0

मैं इसे अपने आप प्रयास नहीं किया है, लेकिन आप

http://zesty.ca/python/scrape.html की कोशिश की?

ऐसा लगता है कि एक विधि htmldecode (टेक्स्ट) है जो आप चाहते हैं जो करेंगे।

2

BeautifulSoup का उपयोग करने का प्रयास करें। यह चाल चलाना चाहिए और साथ ही साथ काम करने के लिए आपको अच्छी तरह से स्वरूपित डोम देना चाहिए।

This blog प्रविष्टि के साथ कुछ सफलता मिली है।