首页 > 解决方案 > 使用 Jsoup 浏览使用函数而不是 url 的网页

问题描述

<div class="pb_ft clearfix" style="width:500px;clear:both;margin-top:50px;">
  <div class="turn_page" id="list_navigator" style="margin-left:200px;">
    <ol style="width:980px;">
      <li style="width:100px;border:0">12129 Pages</li>
      <li class="turn_pre"><a href="#" onclick="PageContext.PageNav.goPre();return false;">Last Page</a></li>
      <li><a href="#" onclick="PageContext.PageNav.go(1,12129);return false;">1</a></li>
      <li><a href="#" onclick="PageContext.PageNav.go(2,12129);return false;">2</a></li>
      <li><a href="#" onclick="PageContext.PageNav.go(3,12129);return false;">3</a></li>
      <li><a href="#" class="current">4</a></li>
      <li><a href="#" onclick="PageContext.PageNav.go(5,12129);return false;">5</a></li>
      <li><a href="#" onclick="PageContext.PageNav.go(6,12129);return false;">6</a></li>
      <li><a href="#" onclick="PageContext.PageNav.go(7,12129);return false;">7</a></li>
      <li class="turn_next"><a href="#" onclick="PageContext.PageNav.goNext();return false;">Next Page</a></li>
    </ol>
  </div>
  <!--Next Page-->
</div>

它使用一个 href = "#",然后是一个函数 "PageContext.PageNav.go(2, 12128)。

通过调用 JavaScript 函数,似乎总共加载了 12128 个页面。

浏览这些网页的最佳方式是什么?我应该更好地模拟按钮单击,还是可以调用网站的功能使其翻页。

标签: web-scrapingjsoup

解决方案


Jsoup 是一个HTML 解析器,而不是浏览器。话虽如此,单击菜单选项后,仍然可以查看 url 中返回的内容。

如果它是可预测的,您可以将所需的参数附加到 URL 以使用 Jsoup 抓取。如果没有,您将不得不使用 Selenium 之类的东西来循环浏览菜单,然后使用 Jsoup 解析每个页面。

您还可以尝试在浏览器中禁用 Javascript,以查看网站如何处理它。它可以带你到一个不使用 js 的导航。值得一试。


推荐阅读