【问题标题】:Get URL from html page - objective从 html 页面获取 URL - 目标
【发布时间】:2012-02-27 19:13:01
【问题描述】:

我需要从加载的 HTML 页面中获取 URL。这是放置我的 URL 的 HTML 标记

<a class="top_nav_link" id="logout_link" href="https://login.vk.com/?act=logout&hash=29327318c645d49a48&from_host=vk.com&from_protocol=http" onclick="if (!checkEvent(event)) { ge('logout_form').submit(); return false; }">

还有网址:“https://login.vk.com/?act=logout&hash=29327318c645d49a48&from_host=vk.com&from_protocol=http”

哈希可能不同。 如何获取此网址?

【问题讨论】:

  • 你能假设 HTML 是正确格式的 XHTML 吗?或者这是任何可能不是格式良好的 XML 结构的旧 HTML?
  • 您是否将页面加载到 UIWebView 中?
  • @JimBlackler 不,我已经在 NSString 中使用 ASIHTTPRequest 加载了它

标签: iphone objective-c ios html-parsing


【解决方案1】:

既然你说 HTML 实际上是格式良好的 XHTML,那么你可以使用任何 XML 解析方法来解析文档并找到你要查找的内容。使用 NSXMLParser 和一个有效的解析器委托,你可能会有类似的东西:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {

    if ([elementName isEqualToString:@"a"] && [[attributeDict objectForKey:@"id"] isEqualToString:@"logoutLink"]) {
        // Found the <a> tag with an id of logoutLink
        NSString *linkURL = [attributeDict objectForKey:@"href"];
        // Do what you want with the link URL here
    }

这假设您正在寻找一个特定的 &lt;a&gt; 元素,其 id 为 logoutLink。如果您正在寻找其他方法来识别哪个 &lt;a&gt; 标记具有您想要的 URL,您可以相应地调整此示例代码中的 if 语句。

【讨论】:

  • 我试图做到这一点,但解析器在 标签处停止(在它成功解析 5 个标签之前)。当我说该页面是格式良好的 XHTML 时,我可能弄错了。
  • 要检查它是否是有效的 XHTML,请尝试使用验证器站点,例如 validator.w3.org
  • 在这种情况下,您可能想尝试使用 lib tidy 之类的库来首先清理您的 HTML。请参阅stackoverflow.com/q/1527883/830760 以获取另一个带有 libtidy 链接的 SO 问题
猜你喜欢
  • 1970-01-01
  • 2023-04-09
  • 2020-02-15
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 2015-05-08
相关资源
最近更新 更多