2013-07-17 7 views
6

स्क्रैप करने के लिए JSoup का उपयोग करके मैं Google से खोज परिणामों को स्क्रैप करने के लिए JSoup का उपयोग करने का प्रयास कर रहा हूं। वर्तमान में यह मेरा कोड है।Google परिणाम

public class GoogleOptimization { 
public static void main (String args[]) 
{ 
    Document doc; 
    try{ 
     doc = Jsoup.connect("https://www.google.com/search?as_q=&as_epq=%22Yorkshire+Capital%22+&as_oq=fraud+OR+allegations+OR+scam&as_eq=&as_nlo=&as_nhi=&lr=lang_en&cr=countryCA&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&tbs=&as_filetype=&as_rights=").userAgent("Mozilla").ignoreHttpErrors(true).timeout(0).get(); 
     Elements links = doc.select("what should i put here?"); 
     for (Element link : links) { 
       System.out.println("\n"+link.text()); 
    } 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

} 

मैं सिर्फ खोज परिणामों का शीर्षक और शीर्षक के नीचे स्निपेट प्राप्त करने का प्रयास कर रहा हूं। तो हाँ, मुझे नहीं पता कि इन तत्वों को छीनने के लिए किस तत्व को देखना है। यदि जावा का उपयोग करके Google को स्क्रैप करने के लिए किसी के पास बेहतर तरीका है तो मुझे जानना अच्छा लगेगा।

धन्यवाद।

+0

तो क्या आप जिस पाठ को खोजने के लिए दर्ज किया है और सभी खोज परिणामों के मुख्य लिंक चाहते हैं? – Collin

+0

मैं चाहता हूं कि मैं जिस पाठ को खोजने के लिए दर्ज किया गया हूं और फिर खोज परिणामों के शीर्षक/निकाय निकालने के लिए jsoup का उपयोग करें, मुख्य लिंक नहीं। – user2405920

+1

क्या आप वाकई Google द्वारा इसकी अनुमति है? – mael

उत्तर

11

यहां आप जाते हैं।

public class ScanWebSO 
{ 
public static void main (String args[]) 
{ 
    Document doc; 
    try{ 
     doc =  Jsoup.connect("https://www.google.com/search?as_q=&as_epq=%22Yorkshire+Capital%22+&as_oq=fraud+OR+allegations+OR+scam&as_eq=&as_nlo=&as_nhi=&lr=lang_en&cr=countryCA&as_qdr=all&as_sitesearch=&as_occt=any&safe=images&tbs=&as_filetype=&as_rights=").userAgent("Mozilla").ignoreHttpErrors(true).timeout(0).get(); 
     Elements links = doc.select("li[class=g]"); 
     for (Element link : links) { 
      Elements titles = link.select("h3[class=r]"); 
      String title = titles.text(); 

      Elements bodies = link.select("span[class=st]"); 
      String body = bodies.text(); 

      System.out.println("Title: "+title); 
      System.out.println("Body: "+body+"\n"); 
     } 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

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

<ol eid="" id="rso"> 

कि नीचे है आप प्रत्येक तत्व के लिए तो लिस्टिंग कि

<li class="g"> 

के साथ शुरू के एक झुंड देखेंगे यह है कि आप अपने प्रारंभिक तत्वों सरणी में डाल करना चाहते हैं, आप उस स्थान को ढूंढना चाहेंगे जहां शीर्षक और शरीर हैं। इस मामले में, मुझे शीर्षक

<h3 class="r" style="white-space: normal;"> 

तत्व के अंतर्गत पाया गया। तो आप प्रत्येक लिस्टिंग में उस तत्व की खोज करेंगे। शरीर के लिए भी यही है। मैंने शरीर को नीचे पाया है इसलिए मैंने .text() विधि का उपयोग करके उस की खोज की और उसने उस तत्व के तहत सभी पाठ वापस कर दिए। कुंजी हमेशा मूल विशेषता के साथ तत्व को खोजने और खोजने के लिए है (कक्षा नाम का उपयोग आदर्श है)। यदि आप नहीं करते हैं और केवल "div" जैसे कुछ खोजते हैं तो यह पूरे पृष्ठ को किसी भी तत्व के लिए div युक्त करेगा और उसे वापस कर देगा। तो आप चाहते हैं कि आप अधिक से अधिक परिणाम प्राप्त करेंगे। मुझे उम्मीद है कि यह अच्छी तरह से बताएगा। यदि आपको और प्रश्न पूछने हों तो मुझे बता दें।

+0

मेरा जवाब संपादित किया, मुझे आशा है कि यह समझ में आता है। जैसे मैंने कहा कि मैं क्रोम का उपयोग करने का सुझाव दूंगा। यह वेबसाइट (एचटीएमएल, सीएसएस, नेटवर्क, स्क्रिप्ट) के साथ कुछ भी करने के लिए अद्भुत है। बहुत कुछ भी। – Collin

+0

बकवास, किसी कारण से यह मुझे HTML में टेक्स्ट पोस्ट करने नहीं देगा। इसे संपादित करने के लिए मुझे एक सेकंड दें इसे संपादित करें: ठीक है, इसे अभी मिला है – Collin

+0

धन्यवाद, इससे बहुत मदद मिलती है। – user2405920

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