【问题标题】:fastest way to fetch value from website in c在c中从网站获取价值的最快方法
【发布时间】:2017-06-21 05:15:53
【问题描述】:

我想发出一个 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.

代码有效。但我想知道这是否是最快的方法...... 任何想法如何更快地做到这一点?非常感谢!

【问题讨论】:

  • 欢迎来到 StackExchange。但是,您似乎在错误的站点上;有关基本工作代码的改进建议,您可能想去codereview.stackexchange.com。但是,如果您的代码的某个部分存在特定问题,请更详细地解释,这里的人将很乐意提供帮助。您可能想使用tour 并阅读How to Ask。当您这样做时:欢迎来到 StackOverflow,这是针对特定程序问题的问答网站。
  • 我投票决定将此问题作为离题结束,因为对于基本工作代码的改进建议,您可能需要访问 codereview.stackexchange.com。
  • @Yunnosch 完美!老师教我!
  • 在进行 codereview 之前,请务必阅读以下内容:Eric Lippert's blog: Which is faster?。它不是 100% 针对您的问题,但仍然相关。

标签: c curl libcurl


【解决方案1】:

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

首先,在这种情况下,“快”是相对的,因为您的瓶颈是带宽,而不是 CPU。接下来,如果您正在尝试从 Web 内容中查找特定元素,则可以使用 telnet 或者如果您的系统上安装了 ncat ,则可以执行以下操作:

echo "GET /index.php" | ncat www.somewebsite.com 80 | grep "value_description"

这可以根据需要编写脚本和调整,但您可以使用grep、sed 和/或awk 来挖掘数据,而无需构建 C 应用程序。

希望能有所帮助。

【讨论】:

  • 在 grep 中,您可以添加 -m 1 参数以在第一次匹配后停止搜索,并添加选项,例如-C 3 如果需要,添加上下文行(例如 3 行)。在第一次匹配后停止将允许 ncat 停止传输,如果在数据开头附近找到“value_description”,可能会减少带宽。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-26
  • 2022-08-18
  • 2018-01-14
  • 2014-03-13
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
相关资源
最近更新 更多