使用 C++ 将网页保存到磁盘
Posted
技术标签:
【中文标题】使用 C++ 将网页保存到磁盘【英文标题】:Saving a webpage to disk using C++ 【发布时间】:2011-10-29 06:01:44 【问题描述】:我已经在 wininet
库的帮助下从 Internet 下载了一个 “文件”,但我似乎无法保存 “网页”,即我以后可以使用文本编辑器或 ifstream
编辑的内容。
在这种情况下,我应该使用哪些工具? wininet
可以将网页保存到磁盘吗?我应该考虑 cURL
(尽管由于缺少 cURL
的文档,我没有设法下载常规文件)?我需要学习所谓的socket编程吗?
注意:我在 Windows 上,使用 MinGW 但如果需要可以切换到 MSVC,我正在网页中寻找源代码,最终我在网页中的文本之后。
另外,我不熟悉 wininet
、curl
或套接字中的任何功能。我需要从这些方面了解什么?
非常感谢任何帮助!
【问题讨论】:
“文件”与“网页”在下载方面有何不同? 缺少 libcurl 的文档?必须尝试curl.haxx.se/libcurl/c 吗? 【参考方案1】:如果您的程序要同时在 Windows 和 unix 上运行,则使用 cURL。否则,坚持使用 MSVC 和 WinINet 函数http://msdn.microsoft.com/en-us/library/windows/desktop/aa385473(v=vs.85).aspx 就使程序运行和分发所需的努力而言,使用起来要容易得多(尤其是如果您没有将程序与 cUrl 静态链接。否则,您将需要在您的程序在 Windows 上运行的任何地方使用 libcurl.dll)。使用 WinINet,您只需包含头文件和库即可使用这些函数。
如果您要使用 WinINet,请参考此代码 sn-p:http://www.programmershelp.co.uk/showcode.php?e=57 除了 while 循环外,使用相同的代码。不要一次读取一个字节,而是按块读取它们并将它们写入输出文件句柄。
如果你要使用 cURL,请参考这篇文章:Download file using libcurl in C/C++
【讨论】:
感谢您的帮助。它工作得很好。还有一件事,现在 dwBytes 是一个 DWORD,如果我消除了 while 循环会发生什么?它会将源代码复制为一个完整的字符串吗? 如果你有一个足够大的缓冲区来容纳整个页面,你应该能够将源代码复制为一个完整的字符串。以上是关于使用 C++ 将网页保存到磁盘的主要内容,如果未能解决你的问题,请参考以下文章