我希望你不要对我太过皱眉,但这应该是一个相当容易的人负责。我想将网站上的文件读成字符串,这样我就可以从中提取信息。
我只想要一种简单的方法将HTML源代码读入字符串。环顾四个小时后,我看到了所有这些库和卷曲的东西。我只需要原始的HTML数据。我甚至不需要一个明确的答案。只是有助于我改进搜索的东西。
为了清楚,我希望我可以操作的字符串中的原始代码,不需要任何解析等。
答案 0 :(得分:8)
您需要一个HTTP客户端库,其中一个是libcurl
。然后,您将向URL发出GET
请求,并阅读回复所选库提供的响应。
这是一个example让你入门,它是C所以我相信你可以解决它。
#include <stdio.h>
#include <curl/curl.h>
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return 0;
}
但你标记了这个C ++,所以如果你想要一个libcurl的C ++包装器,那么使用curlpp
#include <curlpp/curlpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
using namespace curlpp::options;
int main(int, char **)
{
try
{
// That's all that is needed to do cleanup of used resources
curlpp::Cleanup myCleanup;
// Our request to be sent.
curlpp::Easy myRequest;
// Set the URL.
myRequest.setOpt<Url>("http://example.com");
// Send request and get a result.
// By default the result goes to standard output.
myRequest.perform();
}
catch(curlpp::RuntimeError & e)
{
std::cout << e.what() << std::endl;
}
catch(curlpp::LogicError & e)
{
std::cout << e.what() << std::endl;
}
return 0;
}
答案 1 :(得分:3)
HTTP建立在TCP之上。如果您了解套接字编程,则可以编写一个简单的网络应用程序,打开所需服务器的套接字并发出HTTP GET
命令。无论服务器响应什么,您都必须删除所需的实际文档之前的HTTP标头。
如果这听起来很复杂,那就坚持使用libcurl。
答案 2 :(得分:1)
如果是黑客攻击 - 那么只需从show source获取源代码,然后保存为txt。那么你可以使用普通文件io流打开它。
答案 3 :(得分:0)
如果您只想抓取整个HTML代码而没有任何解析和外部库,我的兴趣就是将带有IO流的代码复制到字符串中。
这是我想到的最简单的方法,但请注意,这不是最有效的方法。