如何使用C从www获取页面的HTML代码?

时间:2012-08-19 18:25:44

标签: c http url web

我只想使用C将网页(其HTML代码,如果它像www.example.com/example.html)提取到文本文件中。是否可以使用任何图书馆学习或任何其他内容? 我真的迷失了“也许我应该学习”PHP或python等等,然后使用system()或exec()使用这些脚本的命令行调用。这是最好的方法吗?

我的确切当前需求是获取http://livechat.rediff.com/sports/score/score.txt,这恰好是一个.txt文件。

2 个答案:

答案 0 :(得分:2)

使用curl or libcurl。它将为您提取一个网页,您可以随心所欲地做任何事情。

答案 1 :(得分:2)

正如托比已经提到的,libcurl可能是你最好的选择。这是一个实际程序,演示如何使用libcurl-easy界面检索网页:

#include <stdio.h>
#include <curl/curl.h>

int main(int argc, char *argv[]) {
    CURL *curl;
    CURLcode curl_result;
    const char *site;

    if (argc != 2) {
        fprintf(stderr, "Usage: %s site\n", argv[0]);
        return 1;
    }   

    site = argv[1];

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, site);
        curl_result = curl_easy_perform(curl);

        if(curl_result != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(curl_result));
        }   

        curl_easy_cleanup(curl);
    }   
    else {
        fprintf(stderr, "Failed to initialize curl\n");
        return 1;
    }   

    return 0;
}

程序接受一个参数,即要检索的站点的名称。使用gcc curltest.c -lcurl -o curltest进行编译并以curltest http://livechat.rediff.com/sports/score/score.txt运行时,输出以下内容:

l1=England vs South Africa
l2=England
interval=1
message=England 16-2 (13)
tagline=J Trott(6) I Bell(4)* 
date=19 August, 2012
ver=19