2011-03-03 22 views
6

क्या आर में कोई तरीका है बस कुछ के लिए Google खोजना और फिर परिणामों की संख्या वापस करना? मैंने Google की कुछ सेवा (RGoogleDocs, RGoogleData, RGoogleMaps, googleVis) के आस-पास आर पैकेजों को देखा है, लेकिन मुझे यह सुविधा कहीं भी नहीं मिल रही है।आर: Google के लिए स्ट्रिंग और हिट की वापसी संख्या

+0

हां, मुझे लगता है कि मुझे याद है कि Google के लिए इसके लिए एक एपीआई है लेकिन मुझे पैकेज देखने को याद नहीं है। अन्य RGoogleFoo पैकेजों का अध्ययन करके आप कुछ पका सकते हैं। –

उत्तर

9

यही वह है जो मैं उपयोग करता हूं, लेकिन यह एक एपीआई प्रोटोकॉल पर आधारित है जिसे अंततः चरणबद्ध किया जा रहा है। यह भी सीमित है, मैं 100 खोज/दिन पर विश्वास करता हूं। नीचे दिए गए फ़ंक्शन में, सेवा "वेब" है; आपको http://code.google.com/apis/loader/signup.html से कोई कुंजी प्राप्त करने की आवश्यकता होगी (कोई यूआरएल काम करेगा)।

GetGoogleResults <- function(keyword, service, key) {  
    library(RCurl) 
    library(rjson) 
    base_url <- "http://ajax.googleapis.com/ajax/services/search/" 
    keyword <- gsub(" ", "+", keyword) 
    query <- paste(base_url, service, "?v=1.0&q=", keyword, sep="") 
    if(!is.null(key)) 
    query <- paste(query, "&key=", key, sep="") 

    query <- paste(query, "&start=", 0, sep="") 
    results <- fromJSON(getURL(query)) 
    return(results) 
} 

उसके बाद, आप की तरह

google <- GetGoogleResults("searchTerm", "web", yourkey) 

str(google) कुछ करना आप परिणाम की संरचना बता देगा कर सकते हैं। यदि आप केवल परिणामों की संख्या चाहते हैं, तो आप google$responseData$cursor$estimatedResultCount का उपयोग कर सकते हैं।

जैसा कि मैंने कहा, यह एक प्रोटोकॉल पर आधारित है जो कुछ दिन शैली से बाहर हो सकता है। प्रति डिर्क के जवाब में, कस्टम खोज इंजन का उपयोग करके एक वैकल्पिक दृष्टिकोण है जिसका आप उपयोग कर सकते हैं, लेकिन यह भी सीमित है (यदि आप इस विधि के लिए कोई फ़ंक्शन चाहते हैं, तो आप मुझे noah_at_noahhl.com पर पिंग कर सकते हैं)।

अंतिम, और नहीं सीमित दर, जिस तरह से सिर्फ RCurl उपयोग करने के लिए गूगल से एक पृष्ठ पर प्राप्त करने के लिए है, लेकिन यह बहुत पार्स करने के लिए गंदा है, और एक उपयोगकर्ता एजेंट स्पूफिंग को ऐसा करने से लोगों को रोकने के लिए गूगल के प्रयास से बचने के लिए की आवश्यकता है। (मैं इस कोड को भी साझा कर सकता हूं, लेकिन जब भी Google उनके किसी भी HTML को ट्वीक करता है तो यह टूट जाता है)।

+2

मैं बस जोड़ दूंगा - यह एक समस्या है जिसे मैंने कुछ बार चलाया है। यदि पर्याप्त रुचि है, तो मैं अपने सभी बिट्स और टुकड़ों को पैकेज कर दूंगा और इसे एक वास्तविक पैकेज बनाउंगा। – Noah

+0

बहुत बढ़िया! मुझे दो क्वेरी असाइनमेंट के बीच 'else' दर्ज करना पड़ा था, लेकिन इसके अलावा यह वही है जो मैं ढूंढ रहा था, धन्यवाद! –

+0

अच्छा पकड़, मेरा बुरा - मैंने इस टुकड़े को एक बड़े समारोह से बाहर ले लिया जो परिणाम के माध्यम से अधिक परिणाम प्राप्त करने के लिए परिणाम देता है। "अन्य" कोडिंग करने के बजाय, शून्य के साथ startpos को प्रतिस्थापित करें। – Noah

1

आप Google Custom Search API प्रलेखन पर शुरू और फिर आप इसे हिट करने के लिए सीखने के लिए :)

वहाँ जगह कुछ जा रहा प्राप्त करने के लिए पर्याप्त अनुसंधान बुनियादी ढांचे होना चाहिए कितना JSON कर सकते हैं।

+0

धन्यवाद! मैं इसे देखूंगा –

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