首页 > 解决方案 > 将 HTML 页面的内容获取到文本文件但没有代码。只是纯文本

问题描述

祝你有美好的一天,

我一直在尝试使用 cURL 将网页保存到文本文件中。但这给我带来了麻烦,因为 cURL 正在保存整个网页代码,而不仅仅是原始输出文本。基本上我正在尝试从https://junkcode.gehaxelt.in/生成垃圾代码并将其保存在文本文件中。如果您右键单击该网站的页面源并滚动浏览,您将看到取消引用指针,尤其是在“this”指针部分的瓶子处,这不是我想要的。我不想要取消引用指针。我只想要网站的纯文本。

如果您右键单击该页面并将其保存为文本文件,它完全符合我的要求,但如果我从 cURL 调用它,它会保存整个 php 代码。我怎样才能解决这个问题?

感谢您的阅读。

标签: c++webcurl

解决方案


这不是 curl 的工作,因为 curl 不是 HTML 解析器。使用 libxml2: http://xmlsoft.org/ 之类的

std::string htmlToText(std::string html){
    htmlDocPtr doc = htmlReadMemory(html.data(), html.length(), "noname.html", "UTF-8", htmlParserOption::HTML_PARSE_RECOVER | htmlParserOption::HTML_PARSE_NODEFDTD | htmlParserOption::HTML_PARSE_NOERROR | htmlParserOption::HTML_PARSE_NOWARNING | htmlParserOption::HTML_PARSE_NOBLANKS  | htmlParserOption::HTML_PARSE_NONET);
    if (doc == NULL) {
        throw std::runtime_error("unable to parse as html (todo libxml2 error message extraction)");
    }
    std::string ret=xmlNodeGetContent(doc);
    xmlFreeDoc(doc);
    return ret;
}

推荐阅读