web-scraping - 使用 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 个页面。
浏览这些网页的最佳方式是什么?我应该更好地模拟按钮单击,还是可以调用网站的功能使其翻页。
解决方案
Jsoup 是一个HTML 解析器,而不是浏览器。话虽如此,单击菜单选项后,仍然可以查看 url 中返回的内容。
如果它是可预测的,您可以将所需的参数附加到 URL 以使用 Jsoup 抓取。如果没有,您将不得不使用 Selenium 之类的东西来循环浏览菜单,然后使用 Jsoup 解析每个页面。
您还可以尝试在浏览器中禁用 Javascript,以查看网站如何处理它。它可以带你到一个不使用 js 的导航。值得一试。
推荐阅读
- android - Unity - 压缩的 .jpg 和 .png 文件在构建 apk 时会被解压缩
- reactjs - 无法在酶测试中更新 Office Fabric UI TextField 的值
- c# - Webform 添加中的输入字符串格式不正确
- zapier - 发送有关 Zap 的信息作为休息挂钩订阅呼叫的一部分
- matlab - 您可以自定义从 MATLAB 函数“ecdf”生成的绘图吗?
- sqlite - 如何将列表对象存储到Sqlite
- bootstrap-4 - 卡在我的导航菜单的 Bootstrap 活动类
- kubernetes-ingress - Kubernetes 证书未为 cert-manager 创建
- django - 在 ubuntu 18.04 中安装 django 时出错
- r - 在循环中在 R 中应用不同的函数