Objective-C的HTML解析。 获取标签之间的所有文本(Objective-C HTML

2019-09-28 09:39发布

我使用hpple ,试图抓住从ThePirateBay洪流描述。 目前,我使用此代码:

NSString *path = @"//div[@id='content']/div[@id='main-content']/div/div[@id='detailsouterframe']/div[@id='detailsframe']/div[@id='details']/div[@class='nfo']/pre/node()";
NSArray *nodes = [parser searchWithXPathQuery:path];
for (TFHppleElement * element in nodes) {
    NSString *postid = [element content];
    if (postid) {
        [texts appendString:postid];
    }
}

这将返回只是纯文本,并没有任何的URL对截图。 反正是有得到所有的链接和其他标记,而不仅仅是纯文本? 该piratebay是fomratted像这样:

<pre>
    <a href="http://img689.imageshack.us/img689/8292/itskindofafunnystory201.jpg" rel="nofollow">
    http://img689.imageshack.us/img689/8292/itskindofafunnystory201.jpg</a>
More texts about the file
</pre>

Answer 1:

这是一个容易的工作,你这样做是正确的差不多!

你想要什么的内容(或属性) a -标签,所以你需要告诉你想要的解析器。

只要改变你XPath

@"//div[@id='content']/div[@id='main-content']/div/div[@id='detailsouterframe']/div[@id='detailsframe']/div[@id='details']/div[@class='nfo']/pre/a"

(您错过了a在最后和你不需要node()

输出:

http://www.imdb.com/title/tt1904996/
http://leetleech.org/images/65823608764828593230.png
http://leetleech.org/images/44748070481477652927.png
http://leetleech.org/images/42024611449329122742.png

如果你只是想截图的网址,你可以这样做

NSMutableArray *screenshotURLs = [[NSMutableArray alloc] initWithCapacity:0];
for (int i = 1; i < nodes.count; i++) {
    [screenshotURLs addObject:nodes[i]];
}


文章来源: Objective-C HTML parsing. Get all text between tags