Веб-сканирование любых страниц с использованием Java - PullRequest
0 голосов
/ 21 мая 2019

Я очень новичок в этом веб-сканировании. Я использую crawler4j для сканирования сайтов. Я собираю необходимую информацию, сканируя эти сайты. Моя проблема в том, что я не смог сканировать контент. Потому что результатом сканирования является код JavaScript. Но я могу получить DOM HTML в веб-браузере. Как я могу получить фактический HTML DOM с помощью Java.

Здесь можно получить DOM с помощью Jsoup или Crawler4j.

<!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>

я ожидал этого результата;

<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>

1 Ответ

1 голос
/ 27 мая 2019

Как описано в соответствующих # 49 или # 197 на странице проекта crawler4j, выполнение / рендеринг контента Javascript с использованием ajax / javascript невозможно с crawler4j на данный момент, поскольку он не включает движок JavaScript для этой цели.

Однако вы можете обойти это поведение, добавив комбинацию Selenium и / или CasperJS и / или PhantomJS перед crawler4j .

...