आर

2010-06-08 4 views
11

मैं इस पेज को स्क्रैप करने का आर का उपयोग करना चाहते में एक स्क्रैप वेब पेज से एक भी तत्व को अलग करने के लिए: (http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html) और अन्य लोगों, गोल स्कोरर और कई बार मिलता है।आर

अब तक, इस मैं क्या मिल गया है है:

require(RCurl) 
require(XML) 

theURL <-"http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html" 
webpage <- getURL(theURL, header=FALSE, verbose=TRUE) 
webpagecont <- readLines(tc <- textConnection(webpage)); close(tc) 

pagetree <- htmlTreeParse(webpagecont, error=function(...){}, useInternalNodes = TRUE) 

और pagetree वस्तु अब मेरे पार्स एचटीएमएल (मुझे लगता है कि) के लिए सूचक होता है। भाग मैं चाहता है:

<div class="cont")<ul> 
<div class="bold medium">Goals scored</div> 
     <li>Philipp LAHM (GER) 6', </li> 
     <li>Paulo WANCHOPE (CRC) 12', </li> 
     <li>Miroslav KLOSE (GER) 17', </li> 
     <li>Miroslav KLOSE (GER) 61', </li> 
     <li>Paulo WANCHOPE (CRC) 73', </li> 
     <li>Torsten FRINGS (GER) 87'</li> 
</ul></div> 

लेकिन अब मैं उन्हें कैसे अलग करने के लिए के रूप में xpathSApply खो रहा हूँ, और स्पष्ट रूप से और xpathApply मुझे से बाहर beejeebies भ्रमित!

तो, किसी को भी तत्व <div class="cont"> टैग के भीतर समाहित बाहर चूसना करने के लिए एक कमांड तैयार करने के लिए कैसे पता है?

+2

सावधान जब इस तरह काम करना ... ज्यादातर मामलों में, फीफा या एफआईबीए, एनबीए आदि जैसे संगठन अपने डेटा के उपयोग की अनुमति नहीं देते रहो - बस कहा: उनका डेटा उनकी संपत्ति है! तो अगली बार कुछ डमी एचटीएमएल कोड प्रदान करें, या बस कुछ हानिरहित साइट पर इंगित करें! =) – aL3xa

उत्तर

16
इन सवालों

बहुत उपयोगी है जब आर में वेब scraping और XML के साथ काम कर रहे हैं: के साथ अपने विशेष उदाहरण के संबंध

  1. Scraping html tables into R data frames using the XML package
  2. How to transform XML data into a data.frame?

, जबकि मैं यकीन नहीं है क्या

theURL <-"http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html" 
fifa.doc <- htmlParse(theURL) 
fifa <- xpathSApply(fifa.doc, "//*/div[@class='cont']", xmlValue) 
goals.scored <- grep("Goals scored", fifa, value=TRUE) 
: यदि आप उत्पादन की तरह लग रहे करने के लिए, यह एक चरित्र वेक्टर के रूप में "गोल किए" हो जाता है चाहता हूँ

xpathSApply समारोह सभी मूल्यों है कि दिए गए मापदंड से मेल हो जाता है, और एक वेक्टर के रूप में उन्हें देता है। ध्यान दें कि मैं कक्षा = 'cont' के साथ एक div की तलाश कैसे कर रहा हूं। क्लास मानों का उपयोग करना अक्सर HTML दस्तावेज़ को पार्स करने का एक अच्छा तरीका है क्योंकि वे अच्छे मार्कर हैं।

आप इस साफ कर सकते हैं लेकिन आप चाहते हैं:

> gsub("Goals scored", "", strsplit(goals.scored, ", ")[[1]]) 
[1] "Philipp LAHM (GER) 6'" "Paulo WANCHOPE (CRC) 12'" "Miroslav KLOSE (GER) 17'" "Miroslav KLOSE (GER) 61'" "Paulo WANCHOPE (CRC) 73'" 
[6] "Torsten FRINGS (GER) 87'" 
+1

सुंदर साफ, मैं बहुत समय पहले ऐसा कुछ ढूंढ रहा था, लेकिन पाइथन में समाप्त हुआ! अब मैं लिटलर स्क्रिप्ट चला सकता हूं और डेटासेट पॉप्युलेट कर सकता हूं! ठंडा! – aL3xa