怎么通过C语言读取网页里面的数据

Python012

怎么通过C语言读取网页里面的数据,第1张

简单的请求格式GET /index.php HTTP/1.0host:www.zixue7.com当我们和服务器连接上之后,发送上面的数据过去,服务器就会返回 index.php 这个页面给我们。GET 这个 是表示 以什么方式请求,HTTP中还有很多其他的请求方式,常用的就 GET POST (更详细的 可以点开上面 http协议 那个链接)GET 后面紧跟一个空格 然后 给出,要获取的资源的名称, /index.php 就表示获取网站服务器根目录下 index.php 执行后所产生的内容,我们也可以改成 GET / HTTP/1.0 这就表示获取默认首页的内容 。 GET /1.html HTTP/1.0 就是获取 服务器根目录下 1.html的内容,很容易理解吧。接下来隔一个空格 跟上 HTTP/1.0 表示 http协议的版本,这个是固定的 。第二行 host:www.zixue7.com 用来指定 访问哪个主机。 大家都知道,一个服务器可以放很多个网站,每个网站有不同的域名,所以我们需要用这个host来指定 我们要访问的是哪个网站,这样 才能正确得访问到我们想访问的网站。第一步,连接服务器。第二步,按照http协议,发送请求数据,然后就是接受返回的内容。没错,就这么简单。在编写程序之前,我们先用一个小工具来模拟一下这个过程,好让我们对http协议了解更深入一些。telnet工具 如果是 win7下的朋友 猛戳这里-->win7开启telnet功能到此为止,我假设大家电脑上已经开启了 telnet功能,正题开始。telnet 他是一个基于tcp/ip 协议的程序,为我们用户提供一个 与其他电脑通信的工具,我们可以使用他来和其他电脑进行连接通信。开始->运行->输入telnet回车, 出现一个黑框如下。我们这时就可以输入命令,来连接远程主机,比如我们这次是要连接我们自学去论坛 的服务器,那么我们就输入 open www.zixue7.com 80 然后回车。open 是打开的意思 后面跟上 要打开那个主机然后 后面跟上端口, web服务器默认使用的是80端口,所以 要加上80端口(不加端口 telnet默认是23端口)。然后会出现下图的情况,这时候 我们就可以输入命令了,输入的命令都将被发送到自学去论坛的服务器上面。大家注意一下 下图红色箭头所指出的部分,那里就是一个输入光标,不用管其他的字。这就代表 我们已经和远程主机连接上了,就相当于我们上节课中 客户端执行到 connect 函数 之后 就是要调用 send函数发送数据了,在这里 我们只需要按键盘输入到黑色窗口中 就会发送到服务端。我们依次输入以下内容,(注意,不能按退格,输入错误了,就重新打开telnet,重新操作。)

首先,用C读取已知文件名的本机文件不是问题吧?那问题实质是在获取URL表示的文件,特别是获取远程WWW服务器以URL表示的文件,把它存放到本机。

有一个API函数叫 URLDownloadToFile(), 用起来特简单。只要一句:

URLDownloadToFile(NULL, url, filename, 0, NULL)

其中url是你需要的文件,filename是下载到本机后的本地文件名。例如:

URLDownloadToFile(NULL, "http://127.0.0.1/1.txt", "C:\\temp\\1.txt", 0, NULL)

下面处理C:\temp\1.txt就可以了。

这个函数在urlmon.h中有说明;需使用urlmon.lib. 有关参数意义请自己查。好像最后一个参数是指定回调函数,可以检查下载状态。但我从来没指定过。从远程站点一次下载很多文件时特别好用。我曾经用它循环起来,一次下载两千多个SWF文件。

但要注意:较大的文件不一定下载完全;有些站点可能检查链接源,限制下载。