使用 XPath 按类值过滤 HTML

Posted

技术标签:

【中文标题】使用 XPath 按类值过滤 HTML【英文标题】:Using XPath to filter HTML by class value 【发布时间】:2011-04-25 06:52:34 【问题描述】:

我正在获取一个 html 页面并尝试获取其中的一些内容以在表格视图中显示它。按照文档我尝试了 NSXMLDocument 和 NSXmlParser 但无法让它们中的任何一个给我正确的数据:-(

我要删除的页面是http://www.instapaper.com/u

我使用的代码是

NSXMLDocument * doc = [[NSXMLDocument alloc]
                        initWithXMLString: data
                        options: NSXMLDocumentTidyHTML
                        error: &error];
NSArray* rows = [doc nodesForXPath:@"//div[class='tableViewCell']" error:&error];

使用 class=tableViewCell 获取 DIV。

如果我只搜索 //div 我会得到很多,但按类过滤似乎不起作用:-(

知道我做错了什么吗?

感谢您的帮助, 米格尔

【问题讨论】:

How can I find an element by CSS class with XPath?的可能重复 【参考方案1】:

我猜你正在尝试按类属性过滤?那么你需要在你的 xpath 中添加一个@

//div[@class='tableViewCell']

但是,我找不到具有此类的 div?

【讨论】:

非常感谢丹尼斯。我以为我确实尝试过这种方式……但是当我这样做时,我似乎做错了什么。现在它完美地工作了:-) 还有一个问题……如果类属性值为“tableViewCell someOtherClassValue”,我该怎么办?现在它只给我返回只有 tableViewCell 作为值的节点。 你可以使用 //div[contains(string(@class),"tableViewCell")] 谢谢丹尼斯...做到了:-)

以上是关于使用 XPath 按类值过滤 HTML的主要内容,如果未能解决你的问题,请参考以下文章

Angular-DataTables - 搜索特定的 html 类值

如何使用 selenium 提取类值并保存在 csv 中?

python 使用xpath获取HTML和过滤器

如何在 Xpath 中使用排除过滤器语法

使用 XPath 和 Selenium 定位类的特定实例

Xpath开始在Scrapy上重新调整无