2016-11-23 6 views
0

私は最初にこれを編集してから、検索と場所を指定できるようにいくつかの変更を加えました。必要があれば私はそれを取ることができますが、私はむしろそうしたくありません。ここに私が持っているものがあります:Yelpエクストラクタでこのエラーをどのように回避できますか?

import java.util.ArrayList; 
import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 
import java.io.IOException; 
import java.util.Scanner; 

public class YelpScrapper 
{ 
    public static void main(String[] args) throws IOException 
    { 
     String description; 
     String location; 
     int pages; 

     Scanner keyboard = new Scanner(System.in); 

     System.out.print("Enter a description: "); 
     description = keyboard.nextLine(); 

     System.out.print("Enter a location: "); 
     location = keyboard.nextLine(); 

     System.out.print("How many pages should we scan? "); 
     pages = keyboard.nextInt(); 

     String descString = "find_desc=" + description.replace(' ', '+') + "&"; 
     String locString = "find_loc=" + location.replace(' ', '+') + "&"; 
     int number = (pages * 10) - 10; 

     String url = "https://www.yelp.com/search?" + descString + locString + "start=" + number; 
     ArrayList<String> names = new ArrayList<String>(); 
     ArrayList<String> address = new ArrayList<String>(); 
     ArrayList<String> phone = new ArrayList<String>(); 
     Document document = Jsoup.connect(url).get(); 

     Elements nameElements = document.select(".indexed-biz-name span"); 
     Elements addressElements = document.select(".secondary-attributes address"); 
     Elements phoneElements = document.select(".biz-phone"); 

     for (Element element : nameElements) 
     { 
      names.add(element.text()); 
     } 

     for (Element element : addressElements) 
     { 
      address.add(element.text()); 
     } 

     for (Element element : phoneElements) 
     { 
      phone.add(element.text()); 
     } 

     for (int index = 0 ; index <= number ; index++) 
     { 
      System.out.println("\nLead " + index); 
      System.out.println("Company Name: " + names.get(index)); 
      System.out.println("Address: " + address.get(index)); 
      System.out.println("Phone Number: " + phone.get(index)); 
     } 

     //for (String name : names) 
     //{ 
      // System.out.println(name); 
     //} 

     //System.out.println("\n"); 

     //for (String add : address) 
     //{ 
      //System.out.println(add); 
     //} 

     //for (String pho : phone) 
     //{ 
      //System.out.println(pho); 
     //} 
    } 
} 

私はBlueJから受け取ったエラーjava.net.SocketTimeoutException;読み取りタイムアウト(java.net.SocketInputStream内)

別の例外をスローする必要がありますか?皆さんの助けを借りてお手伝いいただきありがとうございます!

+1

URLを連結して印刷し、ブラウザでページにアクセスできるかどうかを確認できますか。 – Yan

+1

実際には私は例外を投げただけで、今は明らかに実行されています。 Go figure。 –

答えて

0

多分タイムアウトを設定すると役立つでしょうか?

Document document = Jsoup.connect(url).timeout(10000).get(); 
関連する問題