2011-08-22 58 views
0

我想要从本网页上的“课程负责人的姓名和电子邮件地址:的XPath检索两个查询

http://www.westminster.ac.uk/schools/computing/undergraduate/computer-games-development/bsc-honours-computer-games-development

这怎么可能实现?

我试图找回后“课程内容”第一<p>,但犯规相当的工作..

"//div[starts-with(@id,'content_div')]/h3[.='Course Content']/following-sibling::p[1] 
+0

什么是'h4'检查?还有什么样的“不起作用”? – AakashM

+0

正在测试一些东西。目前它获得课程主管名称,但不是电子邮件地址。它如何检索两个? –

回答

0

我不知道到底是什么XML/XPath的代码看起来像在Objective C,但我怀疑你已经得到你需要的所有信息,你只需要做更多的事情就可以把它分开。您的XPath检索节点看起来是这样的(我已经编辑内容):

<p>Anastassia Angelopolou<br /> 
Email: <a href="mailto:[email protected]">[email protected]</a></p> 

所以,如果你只是问了p节点的文本,你刚才得到的文本Anastassia Angelopolou,(第一)内文本直到第一个子节点(<br />)。要获取电子邮件地址,您可以从p节点xpath到./a子节点,并采用文本或@href的值。

0

由于您正在寻找的值中没有真正唯一的标识标签,我会跳过xpath并创建一个肮脏的小黑客。

// get the HTML code. 
NSString * getURL = [NSString stringWithFormat:@"http://www.westminster.ac.uk/schools/computing/undergraduate/computer-games-development/bsc-honours-computer-games-development"]; 
NSData * htmlData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:getURL]]; 
NSString *htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding]; 


//seperate the HTML code by the unique HTML line of "<h3>Course Leader</h3>" 
NSArray *tempArray = [htmlString componentsSeparatedByString:@"<h3>Course Leader</h3>"]; 
NSString * tempString1 = [[tempArray objectAtIndex:1]description]; 

//get Name 
NSArray * tempArray2 = [tempString1 componentsSeparatedByString:@"<br />"]; 

//set name 
NSString * nameString = [[tempArray2 objectAtIndex:0]description]; 
//clean up name string 
nameString = [nameString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 
nameString = [nameString stringByReplacingOccurrencesOfString:@"\r" withString:@""]; 
nameString = [nameString stringByReplacingOccurrencesOfString:@"<p>" withString:@""]; 

//get Email 
NSArray * emailArray = [tempString1 componentsSeparatedByString:@">"]; 

//set email string 
NSString * emailString = [[emailArray objectAtIndex:3]description]; 
//clean up email string 
emailString = [emailString stringByReplacingOccurrencesOfString:@"</a" withString:@""]; 

NSLog(@"Results: Name = %@ Email = %@",nameString,emailString);