我目前正在尝试使用xpath查询从html网站提取特定数据,但我在拉入特定部分时遇到了问题。
使用//div[@id='main']/h2
作为我的xpath查询,我可以使用以下内容提取“查看当前”文本:
exampleSite.title = [[element firstChild] content];
但是我还想提出以下内容:
1. <b>5/9/2013<nbsp><nbsp> 10:58:45 PM</b>
2. <b>6.32</b>
3. <b>5 Total Points</b>
4. <b>3.72</b>
到目前为止,我已经得到了这个://div[@id='main']/table[@class='bodytext']/tr
但这就是我被卡住的地方。任何帮助将不胜感激!谢谢!
这是我试图抓的HTML:
<div id="main">
<h2>View Current</h2>
<table width="96%" border="0" cellpadding="4" cellspacing="0" bordercolor="#eeeeee" align="center" height="276" valign="top" class="bodytext">
<tr valign="top" >
<td colspan = 2 height="13" valign="top" align="left" width="54%" class="headerblue" >Balances <br>
</td>
</tr>
<tr valign="top" >
<td colspan = 2 height="13" valign="top" align="left" width="54%" class="text" >Balances
as of: <b>5/9/2013<nbsp><nbsp> 10:58:45 PM</b></td>
</tr>
<tr valign="top" >
<td colspan = 2 height="13" valign="top" align="left" width="46%" class="text" >Account
Number: <b>101010123</b></td>
</tr>
<tr valign="top" >
<td colspan = 2 height="13" valign="top" align="left" width="46%" class="text" ></td>
</tr>
<tr valign="top" >
<td height="13" valign="top" align="left" width="46%" class="text" >Example Card Amount:
<b>6.32</b></td>
<td height="13" valign="top" align="left" width="46%" class="text" ><a href="balance.asp?">View Details</a></td>
</tr>
<tr valign="top" >
<td height="13" valign="top" align="left" width="46%" class="text" >Example Dining Plans:<b>5 Total Points</b>
</td>
<td height="13" valign="top" align="left" width="46%" class="text" ><a href="balance2.asp?">View Details</a></td>
</tr>
<tr valign="top" >
<td height="13" valign="top" align="left" width="46%" class="text" >Credit For Printing:
<b>3.72</b></td>
<td height="13" valign="top" align="left" width="46%" class="text" ><a href="balance1.asp?">View Details</a></td>
</tr>
<td colspan = 2 height="13" valign="top" align="CENTER" class="text">For
questions contact Cashiers at<BR> (000)000-0011 or <a href="mailto:example@example.com">example@example.com</a></td>
</tr>
<tr valign="top">
<td colspan = 2 height="13" valign="top" align="CENTER" class="text" >
<a href="balance1.asp">All Plan Usage for last 90 days is available here</a>
</td>
</tr>
<tr valign="top">
<td colspan = 2 height="13" valign="top" align="CENTER" class="text" >
<a href="balance.asp?pln=Full">All Usage for last 365 days is available here</a>
</td>
</tr>
</table>
</div>
答案 0 :(得分:2)
//div[@id='main']/table[@class='bodytext']/tr/td/b
应该会为您提供表格单元格中所有<b>
的列表。
答案 1 :(得分:1)
以下是Mennny答案的扩展,实际上是正确的,所以你应该接受它。 我会在评论中尝试回答您的其他问题:
你做这样的解析:( htmlData
是我的演示数据)
NSData *htmlData = [NSData dataWithContentsOfFile:[@"/Users/dennis/Desktop/demo.html" stringByStandardizingPath]];
TFHpple *parser = [[TFHpple alloc] initWithHTMLData:htmlData];
NSArray *bTags = [parser searchWithXPathQuery:@"//div[@id='main']/table[@class='bodytext']/tr/td/b"];
之后,您将已解析的<b>
标记的内容放在NSMutableArray
中。
NSMutableArray *stringsInBTag = [[NSMutableArray alloc] initWithCapacity:0];
for (TFHppleElement *element in bTags) {
[stringsInBTag addObject:element.content];
}
你得到的是:(数组的记录输出)
( “2013年5月9日” 101010123, “6.32”, “5总积分”, “3.72” )
现在您要设置标签:
// Set label 1 to third <b>
self.label1.text = stringsInBTag[2];
// Set label 2 to first <b>
self.label2.text = stringsInBTag[0];