Web Scraping с Jsoup работает только половину времени - PullRequest
0 голосов
/ 11 августа 2011

В последнее время я поигрался с библиотекой Java Jsoup, пытаясь лучше понять работу с веб-страницами (получение данных с веб-сайта). Но может показаться, что в коде мне удалось собрать воедино только часть функций. Это проблема с моим кодом, или возможно, что на некоторых сайтах есть меры по прекращению использования веб-страниц?

Вот класс, который делает всю «магию»:

import java.io.IOException;
import org.jsoup.*;
import org.jsoup.nodes.Document;




public class HTMLParser {

private Document d;
private String url;
private String content;



    public HTMLParser(String url){
    this.url = url; 
     connect();
     parse();
     display();

    }


    private void connect(){ 
        try{
        d = Jsoup.connect(url).get();   
        }catch(IOException e){}
    }

    private void parse(){
        content = d.body().text();

    }

    private void display(){
        System.out.println(content);

    }

}

Ответы [ 3 ]

0 голосов
/ 09 июня 2017

Вы можете использовать https://github.com/subes/invesdwin-webproxy с поддержкой безголового браузера HtmlUnit Javascript, чтобы дождаться, пока страница отобразит / загрузит данные / выполнит JS / выполнит магию Ajax, прежде чем выполнять синтаксический анализ.

0 голосов
/ 27 апреля 2019

Вы можете очистить веб без Jsoup.

public class Trick {
public static void main(String[] args) {
String str;
URLConnection con;

// ДОЛЖНЫ ИМЕТЬ ПОПРОБОВАТЬ ЗДЕСЬ ИЛИ БРОСИТЬ ЕГО

con =  new URL("ANY URL").openConnection();
Scanner scanner = new Scanner(con.getInputStream());
scanner.useDelimiter(INPUT ANY DELIMETER);
str = scanner.next();
scanner.close();



str = str.substring(content.indexOf("NAME OF CLASS OF ID") + INPUT A NUMBER 
WHICH SIGNIFIES HOW MANY INDEXES YOU WANT IT TO NOT CONSIDER STARTING FROM THE 
LEFT);
String wow = str.substring(0, content.indexOf("WHERE YOU WANT IT TO END OR STOP 
SCRAPING"));
System.out.println(wow);
str = str.substring(content.indexOf("WHERE YOU WANT IT TO END OR STOP 
SCRAPING"));
}
//System.out.println(wow);}}
0 голосов
/ 11 августа 2011

У вас также может быть проблема, если сайт динамически загружает данные.Особенно в этом возрасте AJAX.Игнорирует ли JSoup robot.txt или вы можете заставить его это делать?

В идеале вам нужно отрендерить страницу, а затем очистить ее.

Это программное обеспечение, по-видимому, отображает веб-страницы: http://lobobrowser.org/java-browser.jsp И, безусловно, есть API, который может позволить вам просмотреть структуру веб-страницы.

...