我正在尝试使用带有JSoup的java来获取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获取移动响应。
提前致谢。
答案 0 :(得分:1)
我认为您的用户代理可能不太正确。
我刚试过以下内容并且似乎已经访问了移动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();
<强>更新强> 我已经详细了解了一下,我相信一旦DOM加载,页面内容就会被一些Javascript修改。
查看上面的JSoup代码返回的HTML,我得到了这个(注意内容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浏览器。为了实现您的需求,我认为您可能需要查看类似Is there a way to embed a browser in Java?
的内容答案 1 :(得分:0)
代替:
.userAgent(&#34; Mozilla / 5.0(Linux; U; Android 2.2; en-gb; LG-P500 Build / FRF91)AppleWebKit / 533.0(KHTML,类似Gecko)版本/ 4.0 Mobile Safari / 533.1&# 34;)
<强>尝试:强>
.userAgent(&#34; Opera / 12.02(Android 4.1; Linux; Opera Mobi / ADR-1111101157; U; en-US)Presto / 2.9.201版本/ 12.02&#34;)
找到其他选项:
http://www.useragentstring.com/pages/useragentstring.php
并搜索: