C :如何将多个URL从网站HTML提取到向量

C++: How to extract multiple URLs from website HTML into a vector?

本文关键字:网站 HTML 提取 向量 URL      更新时间:2023-10-16

我的问题是,我在std::string内有一个网站的HTML主体,现在我将所有内部的URL提取到std::vector< std::string >中。我知道如何使用Regex检查字符串是否为URL,但我不知道如何将所有URL提取到std::vector中。

有人可以将我指向正确的方向吗?

要从HTML文档中提取数据,您需要解析HTML。HTML规范描述了HTML的语法(请注意,HTML也有较旧的版本,因此请务必根据编写HTML文档的版本来解析(。该规范有一个非常有用的部分,标题为解析HTML文档,这与编写解析器非常相关。

解析HTML文档的结果应为文档对象模型树。您可以穿越这棵树以找到您要寻找的URL。

因此,在尝试手工处理时,请始终使用良好的标记读取器(例如boost属性树(。

但是假设您已经开发了用于解析HTML的子弹式正则判处。因为我们不希望嫉妒来自其他受害者,他们试图通过Regex穿越Markup语言处理的危险雷区;我们只会致电您的正则言论:regex re,我们会说是1 st 捕获是您要在此vector中存储的URL。

使用如此传奇的正则义务,您唯一需要的另一件事是regex_token_iterator。鉴于进程的输入是,const sting text您可以简单地执行此操作:

vector<string> foo { sregex_token_iterator(cbegin(text), cend(text), re, 1), sregex_token_iterator() }