2017-02-07 7 views
0

Я пытаюсь создать приложение java, которое может обрывать информацию с веб-сайтов, и я сделал некоторые поисковые запросы и управлял очень простым скребком, но этого недостаточно. Кажется, что мой скребок не сломал некоторую информацию на этом веб-сайте, особенно в той части, где я хочу отказаться. enter image description hereJava Web Scraping с помощью Jsoup

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")); 
     } 

Я пробовал оба кода, но я не могу найти эту ссылку в любом месте в объекте элементов. Я считаю, что те данные, которые я хочу, являются результатом поиска, поэтому, когда моя программа подключается к этому URL-адресу, эта информация исчезла. Как я могу это решить? Я хочу программу всякий раз, когда она запускается, отказываясь от результата этого поиска.

Вот 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

Я узнал, что в своем коде, когда я пытаюсь подключиться к веб-странице с результатами поиска, веб-страница отвечает пустым результатом, а в браузере (хром) отображается правильный результат (даже если я использую тот же url). Я распечатал текст документа, а в той части, где должен быть результат поиска, на веб-странице говорится: «Невозможно найти запрошенную страницу». Так ... может ли кто-нибудь помочь этому? – Hoon

+0

Вы пытались установить User Agent при подключении к URL? http://stackoverflow.com/questions/10187603/useragent-in-jsoup – Tim

ответ

0

Я нашел проблему и не смог ее решить. Итак, что я пытался, так это то, что я хотел отказаться от информации с веб-страницы, показывая некоторые результаты конкретного поиска. Проблема заключалась в том, что веб-сайт каким-то образом не позволяет мне подключиться к моему java-приложению с помощью jsoup. Возможно, чтобы защитить их содержимое. Вот почему мне не нужны элементы, потому что на самом деле их нет. Веб-сайт предлагает openAPI для оплаты, поэтому я решил использовать другие веб-сайты.