2010-03-15 8 views
6

मुझे एक कर्मचारी सूची दी गई है जो कि अद्यतित होने वाली है लेकिन यह एएसपी.NET में लिखा गया इंट्रानेट पीपल फाइंडर से मेल नहीं खाता है।पेजिंग और जावास्क्रिप्ट लिंक का उपयोग होने पर मैं ASP.NET वेबसाइटों से जानकारी कैसे स्क्रैप करूं?

जैसा कि जानकारी संवेदनशील है, मैं डेटाबेस फ़ाइंडर का उपयोग कर रहा हूं डेटाबेस का उपयोग करने में सक्षम नहीं हूं इसलिए जानकारी पर मुझे प्राप्त करने का एकमात्र तरीका शीर्ष पर शीर्ष पीतल से शुरू होने वाली संरचना को स्क्रैप करके और फिर प्रत्येक के माध्यम से जा रहा है बदले में स्तर।

प्रत्येक व्यक्ति एक स्टाफ संख्या जो तब यूआरएल http://intranet/peoplefinder/index.aspx?srn=ABC1234 और फिर सभी लोग हैं, जो उन्हें रिपोर्ट प्रारूप <a id="gvEmployees_ctl03_lnkFullName" href="index.aspx?srn=ABC4321" target="_self"> जहां प्रत्येक यूआरएल स्टाफ संख्या को इंगित और उनकी टीम के लिए एक लिंक प्रदान करता है में underneth सूचीबद्ध हैं रूपों है।

समस्या तब उत्पन्न होती है जब टीम बड़ी होती है क्योंकि पेजिंग को ग्रिड व्यू में <a href="javascript:__doPostBack('gvEmployees','Page$2')">2</a> जैसे यूआरएल के साथ लागू किया जाता है।

मैं इस पृष्ठ को कैसे स्क्रैप करूँगा, एसआरएन और अन्य विवरणों को उन लोगों के साथ कैप्चर करूँगा जो ग्रिड व्यू के सभी पृष्ठों पर व्यक्ति को रिपोर्ट करते हैं, फिर प्रत्येक रिपोर्टी के माध्यम से लूप करते हैं और पूरी सूची पूरी होने तक वही प्रक्रिया करते हैं?

उदाहरण परिणाम

<!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" > 
<head><title> 
    People Finder: Name Surname 
</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> 
</head> 
<body> 
    <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 ###" /> 
</div> 

<script type="text/javascript"> 
<!-- 
var theForm = document.forms['form1']; 
if (!theForm) { 
    theForm = document.form1; 
} 
function __doPostBack(eventTarget, eventArgument) { 
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 
     theForm.__EVENTTARGET.value = eventTarget; 
     theForm.__EVENTARGUMENT.value = eventArgument; 
     theForm.submit(); 
    } 
} 
// --> 
</script> 


<script src="/path/to/WebResource.axd?d=AueXWrgAf8xSxMTAt1Q4AA2&amp;t=633311832634916698" type="text/javascript"></script> 

     <div class="HP3CHeader"> 
      <div id="LWHPBanner"> 
       <h1><span id="lblName">Name Surname</span></h1> 
      </div> 
     </div> 

     <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">Business Unit</span> 
        <span id="lblCostCentreName">Cost Centre</span> 
        <span id="lblLocation">Location</span> 

        <a href='/path/to/checkcontactdetails.htm' target='_blank' onclick='return OpenCheckContactDetails();' >Find out how to change your details/photo.</a> 
        <div id="manager"> 
     <strong>Reports to: </strong><a id="hlManager" href="/path/to/index.aspx?srn=ABC1234">Name Surname</a> 
    </div> 
       </div> 

       <div id='contactData'> 

        <div id="pnlSrn"> 
     <strong>Staff number:</strong> <span id="lblSrn">ABC1234</span> 
    </div> 


        <div id="pnlEmailAddress"> 
     <strong>Email Address:</strong> <span id="lblEmailAddress">Email</span> 
    </div> 
        <div style="clear: both"></div> 
       </div> 

</div> 

      <div id="pnlGrid"> 

       <h3><span id="lblGridTitle">Name's team</span></h3> 
      <div> 
     <table class="subordinates" cellspacing="0" cellpadding="2" rules="cols" border="1" id="gvEmployees" style="border-style:None;border-collapse:collapse;"> 
      <tr style="color:Black;background-color:#EFF3FB;border-style:None;font-weight:bold;"> 
       <th scope="col"><a href="javascript:__doPostBack('gvEmployees','Sort$SRN')" style="color:Black;">SRN</a></th><th scope="col"><a href="javascript:__doPostBack('gvEmployees','Sort$FullName')" style="color:Black;">Full name</a></th><th scope="col"><a href="javascript:__doPostBack('gvEmployees','Sort$RACFID')" style="color:Black;">RACFID</a></th> 
      </tr><tr class="reports" style="background-color:White;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl02_lnkFullName" href="index.aspx?srn=1K5932" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:#EFF3FB;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl03_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:White;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl04_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:#EFF3FB;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl05_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:White;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl06_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:#EFF3FB;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl07_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:White;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl08_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:#EFF3FB;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl09_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:White;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl10_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="reports" style="background-color:#EFF3FB;border-style:None;"> 
       <td style="width:70px;">ABC1234</td><td> 
          <a id="gvEmployees_ctl11_lnkFullName" href="/path/to/index.aspx?srn=ABC1234" target="_self">Name Surname</a> 
         </td><td>ABCD</td> 
      </tr><tr class="PagerStyle" style="color:#000039;border-style:None;"> 
       <td colspan="3"><table border="0"> 
        <tr> 
         <td><span>1</span></td><td><a href="javascript:__doPostBack('gvEmployees','Page$2')" style="color:#000039;">2</a></td> 
        </tr> 
       </table></td> 
      </tr> 
     </table> 
    </div> 

</div> 
      </div> 

      <div id="searchBox"> 
       <strong>Search People Finder:</strong> 
       <br /><br /> 
       <span>Forename:</span><br/> 
       <span><input name="txtFirstname" type="text" id="txtFirstname" /></span><br/> 
       <span>Surname:</span><br/> 
       <span><input name="txtSurname" type="text" id="txtSurname" /></span><br/> 
       <span>RACFID:</span><br/> 
       <span><input name="txtRacfid" type="text" id="txtRacfid" /></span><br/> 
       <span>Staff number:</span><br/> 
       <span><input name="txtSrn" type="text" id="txtSrn" /></span><br/> 
       <div class="searchBoxItem" style="text-align:center;width:100%"><input type="submit" name="btnFind" value="Search" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;btnFind&quot;, &quot;&quot;, false, &quot;&quot;, &quot;index.aspx&quot;, false, false))" id="btnFind" title="Search for employees member" class="button" style="border-style:Outset;" /></div><br/> 
       <div>People Finder searches only UK staff.</div> 
       <!-- <div><a class="execBoardLink" href="/path/to/index.aspx?srn=ABC1234">Show Executive Board</a></div> --> 
       <div style="margin-top:5px;"><a href="/path/to/phonebook" target="phoneBook" onclick='return OpenPhonebook();' title="Open Phonebook in new window">Open Phonebook</a></div> 
      </div> 
     </div> 

     <div class="contentFooter" style="text-align:center;"> 
      <table width="100%" cellpadding="0" cellspacing="0" border="0" summary="Navigation layout table"> 
       <tr> 
        <td align="left"><span class="linkArrow">&lt;</span> <a href="javascript:history.back();">Back</a></td> 
        <td align="center"></td> 
        <td align="right"><span class="linkArrow">^ </span><a href="#top">Top</a></td> 
       </tr> 
      </table> 
     </div> 

<div> 

    <input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="vy066Txz34y1E515UsTSTDabHKEmdBRCsq7xM0lpJls1" /> 
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWCgKM3uTTAgLP/83pDwLfwaTTAQKNguzjCAKt98LeCwLZh62pDwKKqdGpBwLd2q7jAwKa+5aMBAL5zb65C42zY4GBEUKujhjtZ/hZ8sLESfiF" /> 
</div></form> 
</body> 
</html> 
+0

जावास्क्रिप्ट जैसे यूआरएल में जावास्क्रिप्ट _doPostBack फ़ंक्शन को जोड़ने का प्रयास करें: (__ doPostBack ('', '')); तो http: //www.mysite/com-javascript: (__doPostBack ('', '')); –

+0

यह टोड काम नहीं किया। क्या मुझे पहले पृष्ठ को दूसरे पेज के लिए पोस्ट करने से पहले चर को बाहर निकालना होगा? क्या यह ठीक से प्रमाणीकरण नहीं कर रहा है? –

उत्तर

3

के एचटीएमएल आप पेजिंग के माध्यम से जाना HTML पृष्ठ पर एक चर पोस्ट कर सकता।

string lcUrl = "http://www.mysite.com/page.aspx"; 

HttpWebRequest loHttp = 

    (HttpWebRequest) WebRequest.Create(lcUrl); 


// *** Send any POST data 

string lcPostData = 

    "gvEmployees=" + HttpUtility.UrlEncode("Page$2"); 

loHttp.Method="POST"; 

byte [] lbPostBuffer = System.Text.   

         Encoding.GetEncoding(1252).GetBytes(lcPostData); 

loHttp.ContentLength = lbPostBuffer.Length; 

Stream loPostData = loHttp.GetRequestStream(); 

loPostData.Write(lbPostBuffer,0,lbPostBuffer.Length); 

loPostData.Close(); 

HttpWebResponse loWebResponse = (HttpWebResponse) loHttp.GetResponse(); 

Encoding enc = System.Text.Encoding.GetEncoding(1252); 

StreamReader loResponseStream = 

    new StreamReader(loWebResponse.GetResponseStream(),enc); 

string lcHtml = loResponseStream.ReadToEnd(); 

loWebResponse.Close(); 

loResponseStream.Close(); 

फिर स्ट्रिंग से आपको आवश्यक डेटा को पार्स करें।

string lcPostData = 

     "__EVENTTARGET" + HttpUtility.UrlEncode("gvEmployees"); & 
"__EVENTARGUMENT" + HttpUtility.UrlEncode("Page%242"); & 
"__VIEWSTATE" + HttpUtility.UrlEncode("<Value of _Viewstate>"); 
+0

कोड टोड के लिए धन्यवाद। मैंने इसे चलाया और पहले पृष्ठ के लिए एचटीएमएल वापस पाने में कामयाब रहा, लेकिन जब मैंने स्ट्रिंग lcPostData = "gvEmployees =" + HttpUtility.UrlEncode ("पृष्ठ $ 2") शामिल किया, तो दूसरे पृष्ठ के लिए जानकारी वापस पोस्ट नहीं किया। दूसरे पृष्ठ को पुनः प्राप्त करने के लिए सही तरीके से पोस्ट करने के लिए मुझे क्या करने की ज़रूरत है? –

+0

आपको आवश्यक सटीक डेटा पोस्ट करना होगा। इसके अलावा यह आवश्यक है कि आप एक पोस्ट बैक ट्रिगर पोस्ट करें। –

+0

जब मैं देखता हूं कि मुझे क्या पोस्ट किया गया है, तो मुझे यह __EVENTTARGET = gvEmployees और __ ईवेंट = पृष्ठ% 242 और __ VIEWSTATE = ... मैं इसे सर्वर पर वापस कैसे पोस्ट करूं? क्या मुझे दृश्य स्थिति भी पोस्ट करने की ज़रूरत है? –

1

आप Fiddler खोलने के लिए और एएसपी का दूसरा पृष्ठ खोलें:

--EDIT--

यहाँ मैं (कुछ इसी तरह) जहां पोस्ट डेटा के सभी भेज दिया जाता है क्या कोशिश करेगा है .NET वेबसाइट टेबल। उस विशेष पृष्ठ सत्र के लिए फिडलर में वेबफॉर्म टैब पर जाएं और शरीर में जांचें कि वेरिएबल क्या पोस्ट कर रहे हैं। सभी अनुक्रमों को उसी अनुक्रम प्रारूप में कनवर्ट करें और HttpWebRequest का उपयोग करके डेटा पोस्ट करें। मेरे मामले में यह था:

string PostData = "__EVENTTARGET=" 
    + HttpUtility.UrlEncode("ctl00$ContentPlaceHolder2$grdDirectory") 
    + "&" 
    + "__EVENTARGUMENT="+HttpUtility.UrlEncode("Page$2") 
    + "&" 
    + "__VIEWSTATE="+ HttpUtility.UrlEncode(view_state) 
    + "&" 
    + "__VIEWSTATEGENERATOR=" 
    + HttpUtility.UrlEncode(viewstategenerator) 
    + "&" 
    + "__VIEWSTATEENCRYPTED=" 
    + HttpUtility.UrlEncode(viewstateencrypted) 
    + "&" 
    + "__EVENTVALIDATION=" + HttpUtility.UrlEncode(eventvalidation); 

आशा है कि यह काम करेगा।

संबंधित मुद्दे