2017-02-07 179 views
0

我正在嘗試製作一個java應用程序,它可以取消網站上的信息,並且我做了一些Google搜索,並管理了非常簡單的刮板,但還不夠。 看來我的刮刀並沒有在這個網站上刪除一些信息,特別是我想要報廢的部分。 enter image description here使用Jsoup Java網頁抓取

1.

 Elements links = htmlDocument.select("a"); 
     for (Element link : links) { 
      this.links.add(link.attr("href")); 
     } 

2.

 Elements linksOnPage = htmlDocument.select("a[href]"); 
     System.out.println("Found (" + linksOnPage.size() + ") links"); 
     for(Element link : linksOnPage) 
     { 
      this.links.add(link.absUrl("href")); 
     } 

我都試過代碼,但我不能找到的元素對象鏈接的任何地方。 我相信,我想要的信息是搜索的結果,所以當我的程序連接到該網址時,該信息就消失了。我該如何解決這個問題?每當它開始時,我都想要一個程序,並刪除搜索結果。

這裏是link to the web site

所以我的問題是,

1.How我放棄的是鏈接到我的代碼的元素對象?我究竟做錯了什麼?

2.是否有任何方法選擇該鏈接並僅進入該鏈接(並非所有超鏈接)?

final Document doc = Jsoup.connect("http://www.work.go.kr/empInfo/empInfoSrch/list/dtlEmpSrchList.do?pageIndex=2&pageUnit=10&len=0&tot=0&relYn=N&totalEmpCount=0&jobsCount=0&mainSubYn=N&region=41000&lastIndex=1&siteClcd=all&firstIndex=1&pageSize=10&recordCountPerPage=10&rowNo=0&softMatchingPossibleYn=N&benefitSrchAndOr=O&keyword=CAD&charSet=EUC-KR&startPos=0&collectionName=tb_workinfo&softMatchingMinRate=+66&softMatchingMaxRate=100&empTpGbcd=1&onlyTitleSrchYn=N&onlyContentSrchYn=N&serialversionuid=3990642507954558837&resultCnt=10&sortOrderBy=DESC&sortField=DATE").userAgent(USER_AGENT).get(); 


    try 
    { 
     Connection connection = Jsoup.connect(url).userAgent(USER_AGENT); 
     Document htmlDocument = connection.get(); 
     this.htmlDocument = htmlDocument; 
     String qqq=htmlDocument.toString(); 
     System.out.println(qqq); 
     if(connection.response().statusCode() == 200) // 200 is the HTTP OK status code 
                 // indicating that everything is great. 
     { 
      System.out.println("\n**Visiting** Received web page at " + url); 
     } 
     if(!connection.response().contentType().contains("text/html")) 
     { 
      System.out.println("**Failure** Retrieved something other than HTML"); 
      return false; 
     } 

     Elements linksOnPage = htmlDocument.select("a[href]"); 
     System.out.println("Found (" + linksOnPage.size() + ") links"); 
     for(Element link : linksOnPage) 
     { 
      this.links.add(link.absUrl("href")); 
      System.out.println(link.absUrl("href")); 
     } 
     return true; 
    } 
    catch(IOException ioe) 
    { 
     // We were not successful in our HTTP request 
     return false; 
    } 

這是我用於抓取的整個代碼。 此代碼我正在使用from this site.

+0

也許這個鏈接是用Javascript生成的嗎?試試這個http://stackoverflow.com/documentation/jsoup/4632/parsing-javascript-generated-pages#t=201702071004321608713 – Tim

+0

我發現在我的代碼中,當我嘗試連接到顯示某些搜索結果的網頁時,網頁響應空結果,而在瀏覽器(鉻)顯示正確的結果(即使我使用相同的網址)。我打印出文檔的文本,並在搜索結果的部分顯示「無法找到您請求的頁面」。所以..有人可以幫助嗎? – Hoon

+0

您是否嘗試在連接到URL時設置用戶代理? http://stackoverflow.com/questions/10187603/useragent-in-jsoup – Tim

回答

0

我發現了問題,無法解決問題。所以,我想要的是,我想從網頁上取消顯示特定搜索結果的信息。問題是,該網站不知道如何讓我使用jsoup從我的Java應用程序連接。可能要保護他們的內容。這就是爲什麼沒有我需要的元素,因爲它實際上不在那裏。該網站提供openAPI收費,所以我決定使用其他網站。