【问题标题】:Extract Name from an HTML page using jquery使用 jquery 从 HTML 页面中提取名称
【发布时间】:2012-05-22 14:24:14
【问题描述】:

我的大学提供成绩卡,这真的很混乱,计算最终结果真的很困难。因为所有科目的期末考试权重不同。

我正在开发 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 的相关部分。

【问题讨论】:

  • 那么问题是什么?您在提供大量背景方面做得很好,这太棒了,但是您能否编辑问题并在底部用一两句话再次澄清问题是什么?谢谢,欢迎来到! 考虑展示您的代码以及您认为问题出在哪里。让每个人都浏览所有链接有点令人困惑。
  • 我确实把我的问题加粗了@jmort253 请帮助提取学生的姓名和课程
  • 链接太多,我们无法合理地知道您的问题到底出在哪里,这对您来说有意义吗?虽然很高兴你知道这一点,但请记住,你是在询问只听说过你的项目大约 5 分钟的志愿者来帮助你解决问题,所以请将代码发布在您认为包含问题的问题。这将有助于为我们提供有关该问题的一些背景信息,并帮助您获得更好、更快的答案。 :) 祝你好运!
  • @jmort253 对不起。现在我完全编辑了我的问题。希望这可以帮助你帮助我。
  • 好多了:) 会看看。谢谢! +1

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


【解决方案1】:

假设您的 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

【讨论】:

  • 你。如果 IGNOU 更改格式,我必须相应地进行更改。我的整个项目都依赖于标记。我做到了bobdn.com/IGNOU_BCA_Result.aspx
  • 广州!希望你得到你的答案:)
【解决方案2】:

这可能有效:

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  );

}

【讨论】:

  • 嗨 CodeRoller,我给你做了一个jsfiddle.net/jrQqY/2,所以你可以看到结果,做一些编辑,调试这个东西。目前它不是 100% 正常工作,但我认为你可以通过更多的编辑来实现它。您的 ind1 值看起来很有意义,但请检查您的修剪调用,因为我认为这可能会出错。 :) 祝你好运!
  • 非常感谢 jmort。我实际上在没有 jquery 的情况下对其进行了测试,然后把它放在那里大声笑。我将尝试编辑小提琴以使其与装饰一起使用。非常感谢!
  • 没问题 :) 乐于助人。
  • @CoderRoller 请编辑这个小提琴并让它工作jsfiddle.net/jrQqY/9
  • 现在检查 jsfiddle 并告诉我 :)
【解决方案3】:

此答案假定您已从远程服务器检索 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 来检索数据。

在检索和解析 RAW HTML 时,没有契约。用简单的英语来说,如果大学改变了那个 HTML 的结构,你的申请就会崩溃。准备好将其添加为风险,并在未来有必要时制定解决该问题的策略。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2017-04-01
    • 2014-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多