c++ - 将 HTML 页面的内容获取到文本文件但没有代码。只是纯文本
问题描述
祝你有美好的一天,
我一直在尝试使用 cURL 将网页保存到文本文件中。但这给我带来了麻烦,因为 cURL 正在保存整个网页代码,而不仅仅是原始输出文本。基本上我正在尝试从https://junkcode.gehaxelt.in/生成垃圾代码并将其保存在文本文件中。如果您右键单击该网站的页面源并滚动浏览,您将看到取消引用指针,尤其是在“this”指针部分的瓶子处,这不是我想要的。我不想要取消引用指针。我只想要网站的纯文本。
如果您右键单击该页面并将其保存为文本文件,它完全符合我的要求,但如果我从 cURL 调用它,它会保存整个 php 代码。我怎样才能解决这个问题?
感谢您的阅读。
解决方案
这不是 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;
}
推荐阅读
- python - psycopg2.extras.execute_values 给出“AttributeError: 'function' object has no attribute 'encoding'”
- python - pandas:根据条件计算特定日期的时间序列百分比变化
- jquery - Jquery返回问题
- discord.py - 命令发送垃圾邮件不和谐机器人
- flask - Flask:更改内容大小
- proguard - 如何防止类的包名的一部分被 ProGuard(或 R8)混淆?
- python - 如何为 MinIO 使用测试桶?
- sql - SQL - 根据日期比较行并转置差异
- windows - cmd 提示符未使用的代理设置
- sql - 如何编写 SQL 查询以将行映射到列?