C ++:如何从网站HTML中将多个URL提取到向量中? [关闭]

问题描述 投票:0回答:2

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

有人能指出我正确的方向吗?

html c++ url extraction
2个回答
2
投票

要从HTML文档中有意义地提取数据,您需要解析HTML。 HTML specification描述了HTML的语法(请注意,还有旧版本的HTML,因此请务必根据HTML文档的编写版本进行解析)。该规范有一个非常有用的标题为Parsing HTML documents的部分,它与编写解析器非常相关。

解析HTML文档的结果应该是Document Object Model树。您可以遍历此树以查找您要查找的URL。


1
投票

所以使用一个好的标记语言阅读器,如Boost Property Tree,总是比手动处理更合适。

但假设你说你已经开发了一个用于解析的防弹正则表达式。因为我们不希望嫉妒来自其他受害者,他们试图通过正则表达式跨越标记语言处理的危险雷区;我们只需要调用你的正则表达式:regex re,我们会说它的第一个捕获是你要存储在这个vector中的URL。

有了这样一个传奇的正则表达式,你唯一需要的是regex_token_iterator。鉴于对流程的输入是,const sting text你可以简单地这样做:

vector<string> foo { sregex_token_iterator(cbegin(text), cend(text), re, 1), sregex_token_iterator() }
© www.soinside.com 2019 - 2024. All rights reserved.