Comment obtenir une réponse mobile de la page Web en utilisant java ou jsoup


J'essaie d'obtenir la réponse de youtube.com utilisation de java avec JSoup.

Je suis en mesure d'obtenir la réponse de youtube en utilisant JSoup comme suit, il renvoie la réponse du site Web de bureau

         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();                

Même façon, j'essaie d'obtenir la réponse pour la version mobile de ce même site, comme suit,

            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();             

Mais cela ne donne que la réponse de la version de bureau/ordinateur portable et non la réponse mobile.

Comment obtenir la réponse mobile de jsoup.

Merci d'avance.

Author: Am_I_Helpful, 2016-03-28

2 answers

Je pense que votre User-Agent n'est peut-être pas tout à fait correct.

Je viens de l'essayer avec ce qui suit et semble avoir frappé le site 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();

Mise à Jour J'ai regardé plus en détail et je crois que le contenu de la page est modifié par du Javascript une fois que le DOM a été chargé.

En regardant le code HTML renvoyé par le code JSoup ci-dessus, j'obtiens ceci (notez que le contenu div est vide):

 <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>

Comparaison avec le HTML affiché dans le dev de Chrome outils je vois ceci:

entrez la description de l'image ici

JSoup est juste un analyseur HTML, pas un navigateur Web. Afin de réaliser ce dont vous avez besoin, je pense que vous devrez peut-être regarder quelque chose comme ceci Existe-t-il un moyen d'intégrer un navigateur en Java?

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

Au Lieu de:

.userAgent("Mozilla/5.0(Linux; U; Android 2.2; fr-fr; LG-P500 Construire/FRF91) AppleWebKit/533.0 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1")

Essayez:

.userAgent("Opera/12.02 (Android 4.1; Linux; Opéra Mobi/ADR-1111101157; U; fr) Presto/2.9.201 Version/12.02")

D'Autres options trouver sur:

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

Et rechercher :

Les Navigateurs Mobiles

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