【问题标题】:How can I extract web app content from html code?如何从 html 代码中提取 Web 应用程序内容?
【发布时间】:2021-05-31 07:04:13
【问题描述】:

所以我目前正在尝试从 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>

【问题讨论】:

  • 也许你可以尝试使用正则表达式来匹配标签并获取标签之间的内容。

标签: java html web-applications data-mining


【解决方案1】:

数据在初始 DOM 之后加载到页面中。 当您使用JSoup 获取数据时,您将获得初始的 html 请求。

这张图片显示 html 请求确实给出了一个空的 html 结构

如果您在浏览器中检查dev tools 中的Network 选项卡,您会看到在初始加载后会有额外的XHR 请求,获取数据。 标签的ngcontent 属性确保页面使用Angular 加载,这是一个Javascript 框架。
这样做是为了使页面加载更高效并更多地防止抓取。

检查后

网络选项卡显示页面加载后具有 JSON 响应的多个请求。您需要查看这些,查看哪些请求标头是强制要求的。 如图所示,其中一个有趣的是: https://www.wtfskins.com/api/v1/p2ptrading/usertrades/

您可以首先查看 How the Web works 以及有关异步 Javascript 请求的子类别和 REST API basics。如果您不熟悉 Web 开发,研究将需要一些时间。

【讨论】:

  • 首先,非常感谢您写得很好!但我不得不承认我没看懂。我不知道如何处理这些信息。也许你有一些我可以使用的主题或 YT 视频?
  • HTML GET 请求并不是制作网页的唯一请求。在初始加载后收集数据/文件。网络选项卡显示有关页面向服务器发出的请求的所有信息。您必须复制包含您需要的数据的那些。
  • @SO_is_love 我在帖子中添加了两个链接,但您必须进行更多研究。如果您同意这回答了您的代码为什么不起作用的问题,请随时接受我的回答
猜你喜欢
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
相关资源
最近更新 更多