Jsoup 使用Java对任何页面进行Web爬网
我对这种网络爬虫很陌生。我使用crawler4j来抓取网站。我通过对这些网站进行爬网来收集所需的信息。我这里的问题是我无法抓取内容。因为爬网的结果是JavaScript代码。但我可以在web浏览器的inspect上获取DOM HTML。如何使用java获得实际的DOM HTML 下面是使用Jsoup或Crawler4j获取DOMJsoup 使用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
<!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&paymentFlag=true" accesskey="A">Fatura Öde</a> </li>
<li> <a href="http://www.vodafone.com.tr/auto-login.php?pageId=TopupPayment&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。