Come ottenere la risposta mobile della pagina Web utilizzando java o jsoup


Sto cercando di ottenere risposta di youtube.com utilizzo di java con JSoup.

Sono in grado di ottenere la risposta di youtube usando JSoup come segue, restituisce la risposta del sito web desktop

         String str = "https://www.youtube.com/";
         doc = Jsoup.connect(str)
                    .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36")
                    .get();                

Allo stesso modo, sto cercando di ottenere la risposta per la versione mobile a questo stesso sito come segue,

            doc = Jsoup.connect("https://"+url2.getHost()+"/search?q="+q)
                        .userAgent("Mozilla/5.0(Linux; U; Android 2.2; en-gb; LG-P500 Build/FRF91) AppleWebKit/533.0 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1")
                        .get();             

Ma questo dà solo la risposta della versione desktop/laptop e non la risposta mobile.

Come ottenere la risposta mobile da jsoup.

Grazie in anticipo.

Author: Am_I_Helpful, 2016-03-28

2 answers

Penso che forse il tuo User-Agent non sia del tutto corretto.

L'ho appena provato con il seguente e sembra aver colpito il sito YouTube mobile:

String mob = "https://m.youtube.com/";
         mobile = Jsoup.connect(mob)
                    .userAgent("Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1")
                    .get();

Aggiorna Ho dato un'occhiata più in dettaglio e credo che il contenuto della pagina venga modificato da alcuni Javascript una volta caricato il DOM.

Guardando l'HTML restituito dal codice JSoup sopra ottengo questo (nota che il div del contenuto è vuoto):

 <body id="body" class="atom fusion-tn">

  <div id="player"></div>
  <div id="guide-layout-container">
    <div id="guide-container"></div>
    <div id="content-container">
      <div id="content"></div>
    </div>
    <div id="guide-overlay"></div>
    <div id="lightbox"></div>
    <div id="toast"></div>
    <div id="content-overlay"></div>
  </div>
  <div id="_yt_orientation_detect"></div>

  </body>

Confronto con l'HTML visualizzato nel dev di Chrome strumenti Vedo questo:

inserisci qui la descrizione dell'immagine

JSoup è solo un parser HTML, non un browser web. Per ottenere ciò di cui hai bisogno, penso che potresti aver bisogno di guardare qualcosa del genere C'è un modo per incorporare un browser in Java?

 1
Author: Adam Rice, 2017-05-23 10:33:58

Invece di:

.L'utente("Mozilla / 5.0 (Linux; U; Android 2.2; it-gb; LG-P500 Build/FRF91) AppleWebKit / 533.0 (KHTML, come Gecko) Versione / 4.0 Mobile Safari / 533.1")

Prova:

.userAgent ("Opera/12.02 (Android 4.1; Linux; Opera Mobi/ADR-1111101157; U; en-US) Presto/2.9.201 Versione / 12.02")

Altre opzioni trovano su:

Http://www.useragentstring.com/pages/useragentstring.php

E cercare :

Browser mobili

 0
Author: calincan mircea, 2017-08-22 18:07:29