使用分页和 JavaScript 链接时,如何从 ASP.NET 网站上抓取信息? [英] How do I scrape information off ASP.NET websites when paging and JavaScript links are being used?
问题描述
我收到了一份应该是最新的员工名单,但它与用 ASP.NET 编写的 Intranet People Finder 不匹配.
由于信息是敏感的,我无法访问 People Finder 使用的数据库,因此我获取信息的唯一方法是从顶部的顶层开始抓取结构,然后遍历每一层依次.
每个人都有一个员工编号,然后形成 URL http://intranet/peoplefinder/index.aspx?srn=ABC1234
然后所有向他们报告的人都列在格式 <a id="gvEmployees_ctl03_lnkFullName" href="index.aspx?srn=ABC4321" target="_self">
其中每个 URL 指示员工编号并提供指向其团队的链接.
当团队很大时就会出现问题,因为在 GridView 中使用诸如 <a href="javascript:__doPostBack('gvEmployees','Page$2')">2< 的 URL 实现分页./a>
.
我将如何抓取此页面、捕获 SRN 和其他详细信息以及在 GridView 的所有页面上向该人报告的人,然后循环遍历每个被报告者并执行相同的过程,直到完成整个列表?
>结果的 HTML 示例
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><头><标题>人物查找器:姓名姓氏</title><link rel="stylesheet" href="/path/to/style.css" type="text/css"/><link rel="stylesheet" href="/path/to/anotherStyle.css" type="text/css"/><script type="text/javascript" src="/path/to/peoplefinder.js"></script>头部><身体><form name="form1" method="post" action="/path/to/index.aspx" id="form1"><div><input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value=""/><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value=""/><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="### ViewState ###"/>
<script type="text/javascript"><!--var theForm = document.forms['form1'];如果 (!theForm) {theForm = document.form1;}函数 __doPostBack(eventTarget, eventArgument) {if (!theForm.onsubmit || (theForm.onsubmit() != false)) {theForm.__EVENTTARGET.value = eventTarget;theForm.__EVENTARGUMENT.value = eventArgument;theForm.submit();}}//--><script src="/path/to/WebResource.axd?d=AueXWrgAf8xSxMTAt1Q4AA2&t=633311832634916698" type="text/javascript"></script><div class="HP3CHeader"><div id="LWHPBanner"><h1><span id="lblName">姓氏</span></h1>
<div id='CPMain'><div id="mainBox"><div id="pnlEmployeeDetails"><div id='basicData'><img id="imgPhoto" class="photo" src="/path/to/photo.jpg" style="height:69px;width:69px;border-width:0px;"/><span id="lblBusinessUnit">业务单位</span><span id="lblCostCentreName">成本中心</span><span id="lblLocation">位置</span><a href='/path/to/checkcontactdetails.htm' target='_blank' onclick='return OpenCheckContactDetails();'>了解如何更改您的详细信息/照片.</a><div id="经理"><strong>报告至:</strong><a id="hlManager" href="/path/to/index.aspx?srn=ABC1234">Name Surname</a>