使用jquery从HTML页面中提取名称

时间:2012-05-15 05:22:34

标签: jquery asp.net regex post jquery-selectors

我的大学提供等级卡,这真的很混乱,计算最终结果真的很难。因为所有科目的最终权重都不同。

我正在开发一个BCA结果计算器。这是https://www.bobdn.com/IGNOU_BCA_Result.aspx

我在div中有以下代码(我无法更改它,因为它是从大学网站返回的)

<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE>Grade Card</TITLE>
<h1> Grade Card </h1>
<h1>&nbsp;</h1>
(All programs Except for BIT/ADIT)

</HEAD>
<BODY  bgcolor=Lavender>


<form name=FRMResult method=post action=Result.asp>
<center> <font size=+2> Indira Gandhi National Open University </font>
 <br> Grade Card Status as on May 09, 2012<br> (For information only)</center>
 Enrolment Number: 092853268<br> Name: SHASHWAT TRIPATHI<br> Program: BCA<p><font size=-1> The Status is indicative only & cannot be used as a substitute for the final grade card which is sent by SRE at the end of a semester.</font><br><table border=1 width='80%' background='ignou.gif'><tr><td width='10%'>  Course Code </td><td width='10%' align=center>  Asgn1 </td><td width='10%' align=center>  Asgn2 </td><td  width='10%' align=center>  Asgn3 </td><td  width='10%' align=center>  Asgn4 </td><td  width='10%'>  Term End Theory </td><td  width='10%'>  Term End Practical</td><td width='10%'>  Status </td></tr><tr><td width='5%' >BCS61</td><td width='10%' >80</td><td width='10%' >73</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >40</td><td width='10%' >67</td><td width='20%' >Completed</td></tr><tr><td width='5%' >BSHF1</td><td width='10%' >35</td><td width='10%' >35</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >41</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS5</td><td width='10%' >80</td><td width='10%' >87</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >48</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS6</td><td width='10%' >70</td><td width='10%' >67</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >59</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS60</td><td width='10%' >90</td><td width='10%' >87</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >53</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS610</td><td width='10%' >60</td><td width='10%' >60</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >48</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS611</td><td width='10%' >80</td><td width='10%' >80</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >52</td><td width='10%' >88</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS612</td><td width='10%' >70</td><td width='10%' >67</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >70</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS62</td><td width='10%' >80</td><td width='10%' >80</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >40</td><td width='10%' >91</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS63</td><td width='10%' >90</td><td width='10%' >93</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >48</td><td width='10%' >85</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS64</td><td width='10%' >59</td><td width='10%' >59</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >40</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS65</td><td width='10%' >50</td><td width='10%' >53</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >97</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS66</td><td width='10%' >80</td><td width='10%' >80</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >57</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS67</td><td width='10%' >83</td><td width='10%' >83</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >93</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS68</td><td width='10%' >63</td><td width='10%' >63</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >62</td><td width='10%' >77</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS70</td><td width='10%' >70</td><td width='10%' >67</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >45</td><td width='10%'>-</td><td width='20%' >Completed</td></tr><tr><td width='5%' >CS71</td><td width='10%' >90</td><td width='10%' >87</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%'>-</td><td width='20%' >Not Completed</td></tr><tr><td width='5%' >FST1</td><td width='10%' >66</td><td width='10%' >66</td><td width='10%' >-</td><td width='10%' >-</td><td width='10%' >73</td><td width='10%'>-</td><td width='20%' >Completed</td></tr></table><br/><font size=-1 >Not with standing the result published/declared, any case of UFM(Unfairmeans) if found will make such result null and void.</font><p>&nbsp;</p><u>Note:- Assignment 4 and TE Practical do not apply to all the courses.</u><font size=-1 color=blue><center>Disclaimer: This electronically generated information does not have any legal validity</font></center>
<P>&nbsp;</P>



<a href="javascript:history.back()">Back </a>

<!--#'include file=scroll.js-->

</BODY>
</HTML>

假设我将此代码放在ID为tempDiv的div中 现在我如何从tempDiv

中提取学生的姓名和课程

另外,这里有一个jsFiddle,显示了大学HTML的相关部分。

3 个答案:

答案 0 :(得分:2)

假设你的html保持不变......你可以使用以下代码

var z = $('form').html();    //grab the html
var za = z.split('<br>',4);  //split using <br> tags
var name = za[3];            //the element which has the name

var purename = name.replace('Name: ','');  //replace 'Name: ' with space to get pure name
alert(purename);​ //alert it

如果IGNOU更改了html,则必须再次编辑它。

JSFiddle Example

答案 1 :(得分:1)

这可能有效:

function getNameProgram(){

   var strTotal=document.getElementById('tempDiv').innerHTML;
   var ind1=strTotal.indexOf('Name');
   var ind2=strTotal.indexOf('Program');
   var ind3=strTotal.indexOf('<P><FONT size=-1>');
   var strName=strTotal.substring(ind1,ind2);
   var strProgram=strTotal.substring(ind2,ind3);
   strName=$.trim(strName.replace('Name:','').replace('<BR>',''));
   strProgram=$.trim(strProgram.replace('Program:',''));

   alert('MYNAME:'+ strName + '\n' + 'MYPROGRAM:' + strProgram  );

}

答案 2 :(得分:1)

此答案假定您已从远程服务器检索HTML并将其加载到HTML页面上。进入您的页面并在DOM的上下文中,以下代码将从HTML中检索名称:

var form = $('form').text();
var nameIndex = form.indexOf("Name: ");
//alert(i);
alert(form.substring(134 + 5));   // prints the name

请参阅http://jsfiddle.net/bsBCR/2/了解演示。

需要注意的是,许多系统都有API,您可以使用这些API从系统中更轻松地检索数据。 API就像您的应用程序和第三方应用程序之间的合同,如果第三方承诺不更改该URL的“方法签名”,您承诺将使用相同的URL来检索数据。 / p>

检索和解析RAW HTML时,没有合同。用简单的英语,如果大学改变了HTML的结构,你的应用程序就会中断。准备好将其作为风险添加,并在将来有必要时提出解决该问题的策略。