怎么用c语言抓取网页中的数据
如何用c语言抓取网页中的数据?
抓取网页数据的网址:http://www.dianping.com/search/category/1/10
只想截取网页中的店名和地址,但是在截取的时候就会出现如下代码的画面,请问大侠们该如何解决呢?(截取代码内容前面省略),网页代码很多没截取下来………
我是想把从网页中截取的店名和地址存入数据库的
alt="dianping.com" src="http://i1.dpfile.com/s/img/logo.gif" /></h1><p>对不起,您的访问存在某些问题。如果您是正常访问,请尝试以下方法:</p><ul><li><p class="c"><a href="#FAQ" onclick="var faq=document.getElementById('FAQ');if(faq.style.visibility=='visible'){faq.style.visibility='hidden'}else{faq.style.visibility='visible'}">点击此处查看常见访问问题</a>。</p></li><li><p class="c">请帮助我们填写一份<a href="http://www.dianping.com/alpacasurvey">用户反馈</a>,非常感谢!我们不会询问任何隐私信息,将根据您的回答寻求解决同类问题的方法。</p></li><li><p class="c">如果以上方法都不能解决您的问题,请与<a href="mailto:spam@dianping.com">spam@dianping.com</a>联系,并附上以下信息,我们会尽快处理:</p><p><textarea rows="10" cols="80">401
180.173.173.253
以下附上我的代码:
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5 #include <curl/curl.h>
6 #include <curl/easy.h>
7
8 FILE *fp; //定义FILE类型指针
9 //这个函数是为了符合CURLOPT_WRITEFUNCTION而构造的
10 //完成数据保存功能
11 size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
12 {
13 int written = fwrite(ptr, size, nmemb, (FILE *)fp);
14 return written;
15 }
16
17 int main(int argc, char *argv[])
18 {
19 CURL *curl;
20
21 curl_global_init(CURL_GLOBAL_ALL);
22 curl=curl_easy_init();
23 curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
24 curl_easy_setopt(curl, CURLOPT_HTTPGET, "?test=string");
25
26 if((fp=fopen(argv[2],"w"))==NULL)
27 {
28 curl_easy_cleanup(curl);
29 exit(1);
30 }
31 //CURLOPT_WRITEFUNCTION 将后继的动作交给write_data函数处理
32 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
33 curl_easy_perform(curl);
抓取网页数据的网址:http://www.dianping.com/search/category/1/10
只想截取网页中的店名和地址,但是在截取的时候就会出现如下代码的画面,请问大侠们该如何解决呢?(截取代码内容前面省略),网页代码很多没截取下来………
我是想把从网页中截取的店名和地址存入数据库的
alt="dianping.com" src="http://i1.dpfile.com/s/img/logo.gif" /></h1><p>对不起,您的访问存在某些问题。如果您是正常访问,请尝试以下方法:</p><ul><li><p class="c"><a href="#FAQ" onclick="var faq=document.getElementById('FAQ');if(faq.style.visibility=='visible'){faq.style.visibility='hidden'}else{faq.style.visibility='visible'}">点击此处查看常见访问问题</a>。</p></li><li><p class="c">请帮助我们填写一份<a href="http://www.dianping.com/alpacasurvey">用户反馈</a>,非常感谢!我们不会询问任何隐私信息,将根据您的回答寻求解决同类问题的方法。</p></li><li><p class="c">如果以上方法都不能解决您的问题,请与<a href="mailto:spam@dianping.com">spam@dianping.com</a>联系,并附上以下信息,我们会尽快处理:</p><p><textarea rows="10" cols="80">401
180.173.173.253
以下附上我的代码:
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5 #include <curl/curl.h>
6 #include <curl/easy.h>
7
8 FILE *fp; //定义FILE类型指针
9 //这个函数是为了符合CURLOPT_WRITEFUNCTION而构造的
10 //完成数据保存功能
11 size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
12 {
13 int written = fwrite(ptr, size, nmemb, (FILE *)fp);
14 return written;
15 }
16
17 int main(int argc, char *argv[])
18 {
19 CURL *curl;
20
21 curl_global_init(CURL_GLOBAL_ALL);
22 curl=curl_easy_init();
23 curl_easy_setopt(curl, CURLOPT_URL, argv[1]);
24 curl_easy_setopt(curl, CURLOPT_HTTPGET, "?test=string");
25
26 if((fp=fopen(argv[2],"w"))==NULL)
27 {
28 curl_easy_cleanup(curl);
29 exit(1);
30 }
31 //CURLOPT_WRITEFUNCTION 将后继的动作交给write_data函数处理
32 curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
33 curl_easy_perform(curl);