jhy / jsoup

jsoup: the Java HTML parser, built for HTML editing, cleaning, scraping, and XSS safety.
https://jsoup.org
MIT License
10.93k stars 2.19k forks source link

bug(?) with .connect(url) when lot of $nbsp; in the page #1088

Closed Trigun87 closed 4 years ago

Trigun87 commented 6 years ago

hello i made a simple script for check a page and warn me if the page is updated.. but i have a problem with 1 site and get different result on different .connect

what i do is something like that

    public static void main(String[] args) throws IOException {
    Map<String, Elements> checkPages = new HashMap<String, Elements>();
    String sectionName = "test";
    while (true) {
        Elements temp = Jsoup.connect("http://www.mat.uniroma3.it/users/natalini/")
            .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0").referrer("http://www.google.com")
            .ignoreContentType(true).timeout(1000 * 30).get().select("body");
        if (checkPages.get(sectionName) != null) {
        if (!checkPages.get(sectionName).text().equals(temp.text()) && temp.text().length() > 10) {
            // sendMsg(sectionName + " modificato: " + section.get("url"));
            checkPages.put(sectionName, temp);
        }
        } else
        checkPages.put(sectionName, temp);
    }
    }

if u put a breakpoint somewhere and try to run the code u enter in the sendMsg section without a real change of the page for ex this are 2 connect of the same page:

Didattica a.a. 2017/18 AVVISI - Gli studenti che intendano sostenere la prova di Analisi Matematica 1 del 3/07 sono convocati alle ore 14:00 in aula N18. - La verbalizzazione della prova di Analisi Matematica 1 del 19/06 si svolgerà giovedì 28/06 alle 10:30 in aula N13. - Il prossimo ricevimento studenti si svolgerà venerdì 4 maggio dalle 11:30 alle 12:30 in aula N15. E' necessario effettuare la prenotazione entro le 20:00 di giovedì 3 maggio, attraverso il seguente link: prenotazione ricev. studenti - La prenotazione (attraverso il portale dello studente) per poter svolgere, in un dato appello, la prova d'esame di Analisi Matematica I e Analisi Matematica II è OBBLIGATORIA. Corso di ANALISI MATEMATICA I (Dipartimento di Ingegneria. canali CH-FE e Q-Z) MATERIALE DIDATTICO Programma del corso Testi suggeriti Appunti (I parte) Appunti (II parte) ESERCITAZIONE DEL 31/10/17 (con soluzioni) ESERCITAZIONE DEL 1/12/17 (con soluzioni) ESERCITAZIONE DEL 7/12/17 (con soluzioni) Esercizi svolti Introduzione ai numeri reali Corso di ANALISI MATEMATICA II (Dipartimento di Ingegneria Elettronica) MATERIALE DIDATTICO Programma del corso Testi suggeriti Integrali impropri Successioni e serie di funzioni Serie di Fourier Trasformate di Laplace e di Fourier Funzioni di più variabili Equazioni differenziali Integrali multipli Integrali curvilinei APPELLI D'ESAME ESITI ESITO DELLA PROVA DI ANALISI MATEMATICA 1 DEL 21/11/2017 (appello straordinario) ESITO DELLA PROVA INTERMEDIA DI ANALISI MATEMATICA 1 DEL 21/12/2017 ESITO DELLA PROVA D'ESAME DI ANALISI MATEMATICA 1 DEL 22/01/2018 (1° appello) ESITO DELLA PROVA D'ESAME DI ANALISI MATEMATICA 1 DEL 19/06/2018 (2° appello) __________________________________ ARCHIVIO last update Jul. 2018
Didattica a.a. 2017/18 AVVISI - Gli studenti che intendano sostenere la prova di Analisi Matematica 1 del 3/07 sono convocati alle ore 14:00 in aula N18. - La verbalizzazione della prova di Analisi Matematica 1 del 19/06 si svolgerà giovedì 28/06 alle 10:30 in aula N13. - Il prossimo ricevimento studenti si svolgerà venerdì 4 maggio dalle 11:30 alle 12:30 in aula N15. E' necessario effettuare la prenotazione entro le 20:00 di giovedì 3 maggio, attraverso il seguente link: prenotazione ricev. studenti - La prenotazione (attraverso il portale dello studente) per poter svolgere, in un dato appello, la prova d'esame di Analisi Matematica I e Analisi Matematica II è OBBLIGATORIA. Corso di ANALISI MATEMATICA I (Dipartimento di Ingegneria. canali CH-FE e Q-Z) MATERIALE DIDATTICO &p; Programma del corso Testi suggeriti Appunti (I parte) Appunti (II parte) ESERCITAZIONE DEL 31/10/17 (con soluzioni) ESERCITAZIONE DEL 1/12/17 (con soluzioni) ESERCITAZIONE DEL 7/12/17 (con soluzioni) Esercizi svolti Introduzione ai numeri reali Corso di ANALISI MATEMATICA II (Dipartimento di Ingegneria Elettronica) MATERIALE DIDATTICO Programma del corso Testi suggeriti Integrali impropri Successioni e serie di funzioni Serie di Fourier Trasformate di Laplace e di Fourier Funzioni di più variabili Equazioni differenziali Integrali multipli Integrali curvilinei APPELLI D'ESAME ESITI ESITO DELLA PROVA DI ANALISI MATEMATICA 1 DEL 21/11/2017 (appello straordinario) ESITO DELLA PROVA INTERMEDIA DI ANALISI MATEMATICA 1 DEL 21/12/2017 ESITO DELLA PROVA D'ESAME DI ANALISI MATEMATICA 1 DEL 22/01/2018 (1° appello) ESITO DELLA PROVA D'ESAME DI ANALISI MATEMATICA 1 DEL 19/06/2018 (2° appello) __________________________________ ARCHIVIO last update Jul. 2018

and u can see that the 2 file have a &p; i noticed, in the original html, a   is &p; (and this explain why i get the 2 different text) but sometimes i get in that position or in other position the &p; and sometimes i get all  

i think sometimes this problem happen on other pages too since sometimes i get fake update notify... but in this page is easier to debug since

i have jsoup v1.11.3

now i'm using .replaceAll(" &p;","").replaceAll(" &sp;","").replaceAll(" &bsp;","") but isn't rly the best way for bypass the problem :-)

jhy commented 4 years ago

Thanks for the report. This would have been a dupe of #1218