java - Jsoup、java、android studio - 没有结果

标签 java android jsoup

我目前正在 android studio 中编写一个 android 应用程序。我想连接 gog.com 并搜索特定游戏。我已经用 Steam 完成了这个,效果很好。当我想在 https://www.gog.com/games?page=1&search=game_title&sort=popularity 搜索游戏时它不起作用。

我的代码 fragment :

String search ="https://www.gog.com/games?page=1&search=cyberpunk&sort=popularity";
Document doc = Jsoup.connect(search).get();
Elements titles = doc.getElementsByClass("product-tile__title");
for(Element title: titles){
    txt = title.text();
    Log.i("My_title", txt);
}

我默认写的是“cyberpunk”。此链接在浏览器中有效,但当我使用 Jsoup 时,相同的链接返回“未找到结果”。是 cookie/用户代理/语言的问题吗?

最佳答案

嗯,你是对的,你的代码应该可以工作,但在这种特殊情况下它不会工作。

原因是因为如果您在浏览器上禁用 JavaScript,并发出此 GET 请求 https://www.gog.com/games?page=1&search=cyberpunk&sort=popularity 您会看到页面将无法加载,原因是这些 html 元素是由 javascript 代码构建或加载的。

因此,在这种情况下,您必须解析在响应中收到的 json,而不是使用 JSOUP

结论

由于 JSOUP 无法运行 javascript,因为它不是网络浏览器,因此在这种情况下您将无法解析 HTML 响应,而是解析 HTML 响应中的 JSON。

关于java - Jsoup、java、android studio - 没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61856514/

相关文章:

android - ViewPager 上的 setCurrentItem()

java - Spring Data Rest 中嵌套资源的分页

java - 将项目添加到 jList

android - 将 CardView 的高度设置为屏幕尺寸的自定义百分比

java - Jsoup 获取隐藏邮件

java - Jsoup 选择没有主题标签的链接

java - 通过 Jsoup 更新 Facebook 状态

java - Android 2.3X 将应用程序杀死到后台

java - 在 Applet 中动态地将字符串从非主线程更新为主线程

java - AsyncTask #3 Android 在将数据发布到 tomcat 服务器时因 doInBackground 而崩溃