2016-09-24 5 views
6

में पहले मैं एक नए प्रश्न के लिए माफ़ी मांगना चाहता हूं क्योंकि मेरी प्रोफ़ाइल ने मुझे अन्य लोगों की टिप्पणियों पर टिप्पणी करने की अनुमति नहीं दी है, विशेष रूप से दो SO पोस्ट I ' देखा है। तो कृपया इस बड़े लड़के के साथ भालू :-)दस्तावेज़ में अत्यधिक गहराई: x122 :: read_html() में XML_PARSE_HUGE विकल्प R

मैं लगभग 90 केबी से 2 एमबी तक के आकार में 100 वर्ण फ़ाइलों की एक सूची पढ़ने की कोशिश कर रहा हूं और फिर qdap पैकेज का उपयोग करके कुछ आंकड़े फाइलों से निकाले गए पाठ के साथ करते हैं अर्थात् वाक्य, शब्द इत्यादि। गिनती में RSelenium::remoteDriver$getPageSource() का उपयोग करके पहले से स्क्रैप किए गए वेबपृष्ठ स्रोत होते हैं और write(pgSource, fileName.txt) का उपयोग करके फ़ाइल में सहेजे जाते हैं।

pgSource <- readChar(file.path(fPath, fileNames[i]), nchars = 1e6) 
doc <- read_html(pgSource) 

है कि कुछ फ़ाइलों के लिए फेंक रहा है

Error in eval(substitute(expr), envir, enclos) : 
    Excessive depth in document: 256 use XML_PARSE_HUGE option [1] 

मैं इन पदों, SO33819103 और SO31419409 कि इसी तरह की समस्याओं को इंगित देखा है लेकिन पूरी तरह से कैसे समझ में नहीं कर सकते हैं: मैं का उपयोग कर एक पाश में फ़ाइलों को पढ़ रहा हूँ उपरोक्त पहले लिंक में @glossarch द्वारा सुझाए गए स्निपेट का उपयोग करके दोनों पोस्टों में सुझाए गए अनुसार @ shabbychef के वर्कअराउंड का उपयोग करें।

library(drat) 
drat:::add("shabbychef"); 
install.packages('xml2') 
library("xml2") 

संपादित करें: मैंने देखा है कि जब पहले से मैं scraping डेटा यूआरएल का उपयोग कर वेबपेजों से रहते हैं एक और स्क्रिप्ट चल रहा था मैं इस समस्या का सामना नहीं किया। कोड वही था, मैं RSelenium's remoteDriver से इसे पढ़ने के बाद doc <- read_html(pgSource) पढ़ रहा था।

मैं इस कोमल समुदाय पूछना चाहूँगा क्या है कि क्या मैं स्थापित करने और लोड हो रहा है xml2 में सही चरणों का पालन कर रहा हूँ shabbychef के drat जोड़ने के बाद या कि क्या मैं के रूप में SO17154308 पोस्ट में सुझाव दिया कुछ अन्य कदम जोड़ने की जरूरत है। किसी भी मदद या सुझावों की बहुत सराहना की जाती है। धन्यवाद।

+1

ये आकार काफी उचित हैं और मुझे संदेह है कि यह HTML से विकृत हो सकता है क्योंकि आपके द्वारा लिंक किए गए एसओ पदों में से एक सुझाव देता है। क्या आप कुछ डेटा प्रदान कर सकते हैं? यदि नहीं, तो HTML को ['htmltidy'] (https://github.com/hrbrmstr/htmltidy) के माध्यम से चलाएं (जीएच संस्करण का उपयोग करें क्योंकि मुझे जल्द ही इसे एक सीआरएएन पुश करने की आवश्यकता है) इसे रोकने के लिए पर्याप्त" ठीक "हो सकता है पार्सर त्रुटि। स्टीवन के कोड का उपयोग करके w/r/t, आप 'devtools :: install_github ("shabbychef/xml2") भी कर सकते हैं, यदि ड्रैट विधि काम नहीं कर रही थी। – hrbrmstr

+0

आपकी मदद के लिए धन्यवाद। मैंने आपके द्वारा सुझाए गए अनुसार 'htmltidy' और' shabbchef/xml2' दोनों को स्थापित करने का प्रयास किया है। मुझे पहले से ही RTools स्थापित करना पड़ा।इस बार मुझे पहले की त्रुटि नहीं मिली क्योंकि आरटीयूडीओ ने नोटिस के साथ 'डॉक्टर <- read_html (pgSource) 'के बाद क्रैशिंग जारी रखी" आर सत्र निरस्त/आर ने घातक त्रुटि/सत्र समाप्त कर दिया था "जिसके बाद मुझे फिर से शुरू करना होगा आईडीई। यदि यह निम्न लिंक को उस फ़ाइल में मदद करता है जो समस्या उत्पन्न कर रहा है। यह लगभग 400 केबी है और यह मेरे Google ड्राइव पर है। [लिंक] (https://drive.google.com/file/d/0ByLdtS5PxGZfcmJrcXpJaDVRVVk/view?usp=sharing) – salvu

+2

यदि आपके पास 'htmltidy' के लिए कोर डंप था तो यह गंभीर रूप से CRIT संस्करण बनाम गिटहब एक का उपयोग करने के कारण है (मैंने एक बग तय किया है जिसे अभी तक इसे सीआरएएन में बनाना है)। हालांकि, कृपया एक नए आर सत्र में सीआरएएन से 'xml2' पैकेज स्थापित करें। फिर 'pg <- read_html ("66951-77_src.html", विकल्प = "विशाल") का प्रयास करें, क्योंकि ऐसा लगता है कि हैडली या जिम ने हाल ही में इसके लिए समर्थन जोड़ा (क्यों वे वास्तविक विकल्प नाम से अलग हो गए हैं क्योंकि वे इसे रखते हैं अन्य सभी के लिए)। – hrbrmstr

उत्तर

5

मुझे नहीं पता कि यह सही काम है या नहीं, लेकिन मेरे प्रश्न में उनकी एक टिप्पणी में @hrbrmstr द्वारा उत्तर दिया गया था। मैंने एक उत्तर पोस्ट करने का फैसला किया ताकि लोग इस प्रश्न पर ठोकर खा सकें कि कम से कम एक जवाब है।

एचटीएमएल स्रोत पढ़ने के दौरान समस्या को "विशाल" विकल्प का उपयोग करके मूल रूप से हल किया जाता है। मेरी समस्या केवल तब से संबंधित थी जब मैंने पहले सहेजे गए स्रोत को लोड किया था। मुझे एप्लिकेशन के "लाइव" संस्करण का उपयोग करते समय भी वही समस्या नहीं मिली, यानी सीधे वेबसाइट से स्रोत पढ़ना।

doc <- read_html(pageSource, options = "HUGE") 

अधिक जानकारी के लिए xml2 संदर्भ मैनुअल यहाँ CRAN-xml2

मैंने पढ़ा करें:

वैसे भी, अब उत्कृष्ट xml2 पैकेज के अगस्त वर्ष 2016 अद्यतन के रूप में निम्नानुसार HUGE विकल्प के उपयोग की अनुमति अपने मूल्यवान योगदान के लिए फिर से @hrbrmstr धन्यवाद देना चाहते हैं।

+1

यह आपके अपने उत्तर का जवाब देने के लिए 100% शांत है! खुशी हुई यह मदद की (ये बग वास्तव में निराशाजनक हो सकता है, तो यह बहुत अच्छा है कि आप बनाम डेटा wrangling का विश्लेषण कर सकते हैं :-) – hrbrmstr

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