Jsoup 使用Java对任何页面进行Web爬网

Jsoup 使用Java对任何页面进行Web爬网,jsoup,crawler4j,Jsoup,Crawler4j,我对这种网络爬虫很陌生。我使用crawler4j来抓取网站。我通过对这些网站进行爬网来收集所需的信息。我这里的问题是我无法抓取内容。因为爬网的结果是JavaScript代码。但我可以在web浏览器的inspect上获取DOM HTML。如何使用java获得实际的DOM HTML 下面是使用Jsoup或Crawler4j获取DOM <!doctype html> <html class="no-js" lang="en"> <head> <titl

我对这种网络爬虫很陌生。我使用crawler4j来抓取网站。我通过对这些网站进行爬网来收集所需的信息。我这里的问题是我无法抓取内容。因为爬网的结果是JavaScript代码。但我可以在web浏览器的inspect上获取DOM HTML。如何使用java获得实际的DOM HTML

下面是使用Jsoup或Crawler4j获取DOM

<!doctype html>
<html class="no-js" lang="en">
 <head> 
  <title>title</title> 
 </head> 
 <body class="component mouse-active body--navigation-fixed" data-js="_mouseActive, _fixed, _component"> 
  <script type="text/javascript">
        var utag_data = {
            page_name: "personel:rootpage", // Page name
            channel: "personel:rootpage2", // s.channel (Section)
            page_type: "personel:rootpage2", // s.channel (Section)
            login_status: "not-logged-in", // s.channel (Section)
        }
    </script> 
  <script type="text/javascript">                           
    some javascript code
</script> 
  <form id="postForm" action="https://testurl.com/index.php" method="post"> 
  </form> 
  <script type="text/javascript">
        some javascript code
</script> 
 </body>
</html>

标题
变量utag_数据={
页面名称:“personel:rootpage”,//页面名称
频道:“personel:rootpage2”//s.channel(部分)
页面类型:“personel:rootpage2”,//s.channel(部分)
登录状态:“未登录”//s.channel(部分)
}
一些javascript代码
一些javascript代码
我期待这个结果

<html lang="tr" class="gccc_com_tr">
<head> 
</head>
<body class="page--home" data-gr-c-s-loaded="true">
<div class="header">
    <div class="nav-top">
    <div class="container">
        <ul class="menu menu-left">
            <li class="active"> <a href="https://www.vodafone.com.tr/" accesskey="B">Bireysel</a> </li>
            <li> <a href="https://www.vodafone.com.tr/VodafoneBusiness/index.php" accesskey="K">Kurumsal</a> </li>
            <li> <a href="https://www.vodafone.com.tr/en/roam-with-vodafone.php">Visiting Turkey</a> </li>
        </ul>
        <ul class="menu menu-right">
            <li> <a href="http://www.vodafone.com.tr/auto-login.php?pageId=InvoicePayment&amp;paymentFlag=true" accesskey="A">Fatura Öde</a> </li>
            <li> <a href="http://www.vodafone.com.tr/auto-login.php?pageId=TopupPayment&amp;paymentFlag=true" accesskey="L">TL Yükle</a> </li>
        </ul>
    </div>
    </div>
    <nav class="navbar">
        <div class="container">
            <div id="navbar">
                <div class="nav navbar-logo" itemscope="" itemtype="https://schema.org/Organization">
                    <a href="/" class="logo" itemprop="url">
                        <span class="icon-vodafone">
                            <span class="path1"></span>
                        </span>
                        <span style="display: none;">
                            Vodafone
                        </span>
                    </a>
                </div>
                <ul class="nav navbar-nav list-nav-main">
                    <div class="">
                        <li class="hide--lg hide--md"></li>
                    </div>
                </ul>
                </ul>
            </div>
        </div>
    </nav>
</div>
<footer class="row">
    <div class="container top">
    </div>
</footer>
<script type="text/javascript" src="/assets/v2/js/script.build.app.js" defer="" async=""></script>  
</body>
</html>


正如相关的或在
crawler4j
的项目页面上所描述的,使用ajax/Javascript执行/呈现内容在
crawler4j
中目前是不可能的,因为它不包括用于此目的的Javascript引擎


但是,您可以通过在
crawler4j

前面添加和/或和/或的组合来绕过此行为。设置用户代理请求标头可能会对您有所帮助。这是一些主机响应根据用户的用户代理值而改变的策略的结果。JavaScript呈现为预期的html。顺便说一下,我在标题中添加了用户代理信息。但问题仍然在继续,若您必须处理JavaScript,那个么忘记Jsoup吧。试试SeleniumWebDriver。