2011-05-07 34 views
1

好的,所以我在C语言中为Linux系统构建这个程序。我需要能够检索URL的内容,然后逐行阅读,以便我可以对其进行自定义分析。如何使用libcurl逐行解析网页?

现在,对我来说非常重要的是速度,这意味着我真的很喜欢这样做,而不必将整个事情保存到文件中,然后阅读文件(例如,因为第一行可能有内容这意味着我不需要阅读其余部分)。

也很重要的是它是线程安全的。我试着在这里使用代码:http://curl.haxx.se/libcurl/c/fopen.html,但它使用全局变量,这使得不可能安全地多线程。

任何想法?

回答

0

如果您只想检索页面的数据,那么直接使用套接字API相当容易。周围还有相当多的图书馆,使它更容易一些。不幸的是,你还没有说出你想要的系统,因此很难推荐你想要的库(Windows需要一些特殊的代码来启动/关闭Winsock,这是不必要的,并且不会编译或链接)几乎任何其他系统)。

+0

这是为Linux(编辑原始问题)。任何对图书馆的建议? – Jordan 2011-05-07 07:01:57

+0

而不是图书馆,完整程序的源代码如何:http://coding.debuntu.org/c-linux-socket-programming-tcp-simple-http-client – 2011-05-07 07:08:20

+0

实现一个完整的兼容的URL客户端(这个问题甚至没有说明它是哪个协议)是很多工作,并且会重新发明现有的车轮。 – 2011-05-09 21:20:28

1

示例就是这样:示例。如果他们的工作稍有不妥,那么修复它可以更好地工作。

我猜想,你最好开始与另一个例子,也许这getinemory.c:

http://curl.haxx.se/libcurl/c/getinmemory.html

的libcurl“由一块块”提供的数据,而不是一行行,所以你的应用程序需要确定何时有足够的数据,然后可以通知libcurl停止传输。

+0

你是否烦扰读过这个问题?他特别说他已经试过cURL,并且它*不会为他工作! – 2011-05-09 21:59:43

+0

他抱怨一个特定的libcurl的例子,是的,我解释了这只是一个例子,甚至还有其他的例子可以做到“正确” – 2011-05-10 06:21:41