0
Hi I'm facing a problem , I'm calling a website using jQuery AJAX to Scrape data from it , so there are 300 links which I want to scrape but the site shows only 50 at a time so we have to scroll down to load all those links can Someone Please Help me ?

var baseURL = "https://hr.myu.umn.edu/psc/hrprd/EMPLOYEE/HRMS/c/HRS_HRAM_FL.HRS_CG_SEARCH_FL.GBL?Page=HRS_APP_JBPST_FL&Action=U&SiteId=1&FOCUS=Applicant&JobOpeningId=";

var appendURL = "&PostingSeq=1";


var result = {};

jQuery.ajax({

async: false,

type: 'GET',

url: 'https://hr.myu.umn.edu/psc/hrprd/EMPLOYEE/HRMS/c/HRS_HRAM_FL.HRS_CG_SEARCH_FL.GBL?Page=HRS_APP_SCHJOB_FL&ACTION=U&FOCUS=Applicant&SiteId=1&',

success: function(resp) {

console.log('ajax success');

var content = $(".ps_box-grid");

   
var objDiv = document.getElementById("win0divHRS_AGNT_RSLT_I$grid$0");    objDiv.scrollTop = objDiv.scrollHeight;

for (var i = 0; i < jQuery('[class="ps_box-edit psc_disabled psc_has_value psc_num"] [class="ps_box-value"]', resp).length; i++) {

结果[baseURL + jQuery('[class="ps_box-edit psc_disabled psc_has_value psc_num"] [class="ps_box-

value"]', resp)[i].innerText + appendURL] = {}

}

},

});

result;


Here's a Link related to a similar problem answered on stack overflow: 

https://stackoverflow.com/questions/34239525/scroll-to-bottom-of-div-using-jquery-if-ajax-returns-success/65727077?noredirect=1#comment116210292_65727077
4

1 回答 1

0

我首先要说我不是 100% 确定如何做到这一点,或者我要说的这个解决方案是否会起作用。

我的建议(简而言之)是使用浏览器的开发者工具记录客户端网站和服务器之间发送的所有传入和传出网络请求。然后在请求中搜索任何看起来像是更新调用的内容以获取更多信息(不完全确定它是什么样的,但我认为你会比我更了解)。

这里有一些要点可以让你朝着正确的方向前进(我使用的是 firefox 开发者版,所以这些都是基于 firefox DE 的。这也假设你是一个完全的新手;对于未来可能会阅读本文的人来说,manley):

  • 如何使用 Firefox 开发者工具,网络选项卡:看这里

  • 如何记录网络流量:看这里

  • 如果您单击网络流量项目,您应该会看到诸如标头和 cookie 之类的东西,您还应该看到请求,即服务器要求某些信息。您将需要请求选项卡。

以下是我会做的一些步骤(以帮助了解这个想法):

  1. 打开网络选项卡并开始录制

  2. 如果刷新页面后没有自动删除任何过去的流量,则刷新页面正在抓取并删除旧流量。

  3. 录制时向下滚动并加载新内容,然后停止录制。

  4. 然后搜索网络流量列表并搜索其中包含请求参数的项目(大多数将为空),您正在寻找的最有可能来自同一个域。

  5. 找到每次向下滚动时似乎都会发生的事情,然后尝试将该请求(使用参数)实现到您的代码中。如果它有效,那么你就完成了,如果它没有,那么 IDK。

编辑:点击 Tab 然后输入并在我完成之前使其发布。

编辑 2:因为内容很可能是从浏览器中的请求加载的。我只想说我不知道​​您将如何使用 jquery 将其实现到代码中,除非您很可能需要使用 AJAX 实现 POST 请求。我是一个在需要废弃某些东西时通常只使用 puppeteer 的人。

于 2021-01-15T05:39:23.427 回答