如何用java或jsoup实现网页的移动响应

iklwldmw  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(300)

我正试图用java和jsoup来获得youtube.com的回应。
我可以使用jsoup得到youtube的响应,如下所示,它返回桌面网站的响应

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

同样的方法,我试图得到移动版对同一个站点的响应,如下所示,

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

但这只给出了台式机/笔记本电脑版本的响应,而不是移动设备的响应。
如何从jsoup获得移动响应。
提前谢谢。

oknrviil

oknrviil1#

我想也许你的用户代理不太正确。
我刚刚尝试了以下内容,似乎已经点击了移动youtube网站:

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

更新我已经看了更详细的内容,我相信页面内容正在被一些javascript修改,一旦dom被加载。
查看上面jsoup代码返回的html,我得到了以下结果(注意content div是空的):

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

与chrome开发工具中查看的html相比,我发现:

jsoup只是一个html解析器,而不是web浏览器。为了达到您的要求,我想您可能需要看看这样的东西有没有一种方法可以在java中嵌入浏览器?

xcitsw88

xcitsw882#

而不是:
.useragent(“mozilla/5.0(linux;u;安卓2.2;en-gb;lg-p500内部版本/frf91)applewebkit/533.0(khtml,类似gecko)版本/4.0 mobile safari/533.1“)
尝试:
.useragent(“opera/12.02(android 4.1);linux操作系统;opera mobi/adr-11111 01157;u;en-us)presto/2.9.201版本/12.02“)
其他选项位于:
http://www.useragentstring.com/pages/useragentstring.php
并搜索:
移动浏览器

相关问题