如何解决如何从 html 代码中提取 Web 应用程序内容? 此图显示 html 请求确实给出了一个空的 html 结构
所以我目前正在尝试从 csgo 赌博网站收集数据来分析它们。所以我写了一个很短的程序,从这个网站提取 html 代码,但它不会提取网络应用程序的内容。 我现在的问题是我需要这个网络应用程序中的信息。我的意思是我可以在 Chrome 中查看它,所以我想会有解决方案。 也许这些图片有助于理解我在找什么:
HTML code; marked the line I want
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
public class Main {
public static void main(String[] args) {
try {
String html = Jsoup.connect("https://www.wtfskins.com/crash").get().html();
System.out.println(html);
} catch (IOException e) {
e.printstacktrace();
}
}
}
这就是我得到的。我需要
的内容<body> <app-root>
loading... // That's the problem
</app-root>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="/assets/js/jquery-ui.min.js"></script>
<script src="/assets/js/bootstrap.js"></script>
<script src="/assets/js/sha3.js"></script>
<script src="/assets/js/sha256.js"></script>
<script type="text/javascript" src="inline.318b50c57b4eba3d437b.bundle.js"></script>
<script type="text/javascript" src="polyfills.2b75d68d2d6cb678fc8d.bundle.js"></script>
<script type="text/javascript" src="main.7932c68952979c366236.bundle.js"></script>
</body>
解决方法
页面中的数据是在初始 DOM 之后加载的。
当您使用 JSoup
获取数据时,您会收到初始 html 请求。
此图显示 html 请求确实给出了一个空的 html 结构
如果您检查浏览器中 Network
中的 dev tools
选项卡,您会看到在初始加载后会有额外的 XHR 请求,获取数据。
标签的 ngcontent
属性确保页面是使用 Angular 加载的,https://www.wtfskins.com/api/v1/p2ptrading/usertrades/ 是一个 Javascript 框架。
这样做是为了提高页面加载效率并防止更多的抓取。
检查后
网络选项卡显示页面加载后具有 JSON 响应的多个请求。您需要查看这些,查看哪些请求标头是请求它们所必需的。 如图所示,其中一个有趣的是:
您可以首先查看 REST API basics 以及有关异步 Javascript 请求的子类别和 {{3}}。如果您不熟悉 Web 开发,研究将需要一些时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。