我尝试使用htmlcxx来解析网页。 问题是,这个例子不是可编译的atm。
tree<HTML::Node>::iterator it = dom.begin();
tree<HTML::Node>::iterator end = dom.end();
for (; it != end; ++it)
{
if (it->tagName() == "A")
{
it->parseAttributes();
std::cout << it->attributes("href");
std::cout<< std::endl;
}
}
问题是it->attributes("href");
其余的工作正常。但是这条线,我得到了
错误:没有匹配函数来调用
'htmlcxx::HTML::Node::attributes(const char [5])'
/usr/local/include/htmlcxx/html/Node.h:51:注意:候选人是:
const std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >& htmlcxx::HTML::Node::attributes() const
有人有想法吗?
答案 0 :(得分:5)
我刚看了一眼来源。您想要的功能是attribute
,而不是attributes
:
// attribute takes a string
std::pair<bool, std::string> attribute(const std::string &attr) const { ... }
// attributes takes nothing
const std::map<std::string, std::string>& attributes() const { return this->mAttributes; }
答案 1 :(得分:2)
看起来attributes
函数不会将属性名称作为参数,而是返回地图中的所有属性。您应该阅读库文档以确认这一点。
答案 2 :(得分:1)
我遇到了同样的问题。有关使用htmlcxx的更多信息,我发现这些页面很有用(因为htmlcxx使用了这个树类):