【问题标题】:Parse URLs out of a HTML page从 HTML 页面中解析 URL
【发布时间】:2011-07-06 13:28:26
【问题描述】:

我有一个包含通过WinHttpReadData 下载的HTML 页面的字符串。该字符串是一个简单的char*。
我一直在想办法只提取该页面上的 URL。举个例子,假设您正在 google 搜索 WinHTTP 这个词,并且您看到一个充满链接的 HTML 页面。我现在需要检查每个链接,将其提取并保存到文件中。

我尝试搜索HREF、http:// 和其他关键字,然后尝试将字符串一直提取到</a>,但它并没有真正起作用。将描述从该 URL 中提取出来也很好(例如 <a href="http://someurl.com/somepage.html">some text</a> 得到 some text),但它不如 URL 本身重要。

这里的棘手之处在于我不能使用 3rd 方库,因为我不想处理许可证等问题。

关于如何做到这一点的任何想法? WinHTTP 是否提供了一种方法来做到这一点?在 C 中(不是 C++)?

感谢您的帮助

【问题讨论】:

  • “因为我不想处理许可证等问题” - 只需找到一个在 LGPL 下获得许可的 HTML 解析器。那么只要不修改库本身,基本上就可以不用管什么了
  • 已经试过了,找不到 BSD、MOZILLA 或 LGPL 的。谢谢你。

标签: c winhttp


【解决方案1】:

也许你应该选择 PCRE C API(在PCRE site 上可用)

您需要的正则表达式如下:

<a.*?href=[""'](?<url>.*?)[""'].*?>(?<name>.*?)</a>

这也应该在组结构中映射组<url> 和<name>。

【讨论】:

  • 我也会使用正则表达式。如果您使用的是 C++0X,它在 STL 中内置了对它的支持。
  • 感谢您的提示。我刚刚下载了 PCRE,但是从包中的所有文件中弄清楚要使用什么是一团糟。你介意指点我需要的文件吗?还是我都需要?
  • 我不想听起来粗鲁,但 README 应该是一个好的开始。我敢打赌,源代码用 make 或 cmake 编译成一个库。然后你必须导入描述库外部接口的头文件,并在构建时链接。还可以在网站上或通过 google 查找文档。你肯定会找到例子。抱歉,说得更准确些,但我目前不使用该库。
  • 谢谢。不幸的是,我没有使用 GCC 或其他可以使用库提供的 makefile 的编译器。我正在使用视觉工作室......我想我不会使用它。再次感谢
  • 在这种情况下还要检查NON-UNIX-USE 文件。它正在谈论 Windows 用户的 cmake 使用。他们还在某些部分谈论了 Visual Studio。顺便说一句,欢迎您。
猜你喜欢
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多