Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用c语言从网站获取价值的最快方法_C_Curl_Libcurl - Fatal编程技术网

用c语言从网站获取价值的最快方法

用c语言从网站获取价值的最快方法,c,curl,libcurl,C,Curl,Libcurl,我想发出http请求,获取网站内容并检查一个特定元素。目前,我正在使用lcurl(从教程中得到解释)来完成这项工作。以下是我的代码摘录: curl_global_init(CURL_GLOBAL_ALL); CURL *myHandle; CURLcode result; struct BufferStruct output; output.buffer = NULL; output.size = 0; //requested value is on this website char* ur

我想发出http请求,获取网站内容并检查一个特定元素。目前,我正在使用lcurl(从教程中得到解释)来完成这项工作。以下是我的代码摘录:

curl_global_init(CURL_GLOBAL_ALL);
CURL *myHandle;
CURLcode result;
struct BufferStruct output;
output.buffer = NULL;
output.size = 0;

//requested value is on this website
char* url = "https://www.somewebsite.com";

//set curl handle to write the website content into buffer
myHandle = curl_easy_init();
curl_easy_setopt(myHandle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(myHandle, CURLOPT_WRITEDATA, (void*)&output);
curl_easy_setopt(myHandle, CURLOPT_URL, url);
curl_easy_perform( myHandle );

//searching for position of the requested value.
uint8_t* value_position = strstr(output.buffer, "value_description");
//copy the value (8 chars) into a buffer defined earlier
strncpy(value, value_position, 8);
//... clean up etc.
代码是有效的。但我想知道这是不是最快的方法。。。 有没有办法加快速度?非常感谢

我想发出http请求,获取网站内容并检查一个特定元素。。。但我想知道这是不是最快的方法

首先,在这个上下文中,“快”是相对的,因为瓶颈是带宽,而不是CPU。接下来,如果您所做的只是试图从web内容中查找特定元素,则可以使用
telnet
,或者如果您已经在系统上安装了,则可以执行以下操作:

echo "GET /index.php" | ncat www.somewebsite.com 80 | grep "value_description"
这可以根据需要编写脚本并进行调整,但对于单个值,您可以使用
grep
sed
和/或
awk
挖掘数据,而无需构建C应用程序

希望这能有所帮助

我想发出http请求,获取网站内容并检查一个特定元素。。。但我想知道这是不是最快的方法

首先,在这个上下文中,“快”是相对的,因为瓶颈是带宽,而不是CPU。接下来,如果您所做的只是试图从web内容中查找特定元素,则可以使用
telnet
,或者如果您已经在系统上安装了,则可以执行以下操作:

echo "GET /index.php" | ncat www.somewebsite.com 80 | grep "value_description"
这可以根据需要编写脚本并进行调整,但对于单个值,您可以使用
grep
sed
和/或
awk
挖掘数据,而无需构建C应用程序


希望能有所帮助。

欢迎使用StackExchange。然而,你似乎在错误的地点;对于基本工作代码的改进建议,您可能希望访问。但是,如果您的代码的某个部分存在特定问题,请详细解释,这里的人将乐于提供帮助。你可能想拿这本书读一读。当您这样做时:欢迎访问StackOverflow,这是一个针对特定程序问题的问答网站。我投票将此问题作为离题题关闭,因为对于基本工作代码的改进建议,您可能希望访问codereview.stackexchange.com。@Yunnosch Perfect!老师教我!在转到codereview之前,请确保阅读以下内容:。它不是100%针对您的问题,但仍然相关。欢迎使用StackExchange。然而,你似乎在错误的地点;对于基本工作代码的改进建议,您可能希望访问。但是,如果您的代码的某个部分存在特定问题,请详细解释,这里的人将乐于提供帮助。你可能想拿这本书读一读。当您这样做时:欢迎访问StackOverflow,这是一个针对特定程序问题的问答网站。我投票将此问题作为离题题关闭,因为对于基本工作代码的改进建议,您可能希望访问codereview.stackexchange.com。@Yunnosch Perfect!老师教我!在转到codereview之前,请确保阅读以下内容:。它不是100%针对您的问题,但仍然相关。在grep中,您可以添加-m 1参数以在第一次匹配后停止搜索,并添加选项,如-C 3以添加上下文行(如3行)。在第一次匹配后停止将允许ncat停止传输,如果在数据开头附近发现“value_description”,则可能会减少带宽。在grep中,您可以添加-m 1参数以在第一次匹配后停止搜索,并添加选项,例如,-C 3以在需要时添加上下文行(例如3行)。在第一次匹配后停止将允许ncat停止传输,如果在数据开头附近发现“值描述”,则可能会减少带宽。