获取网站源代码,shell获取网页源码

  获取网站源代码,shell获取网页源码

  Linux操作系统操作系统获取网页源码的几种方法-遗世之都-伊泰耶技术网站

  Linux操作系统操作系统获取网页源码的几种方法

  LinuxSocketChromeCC JavaEye博客还是本科做毕业设计时候开通的,基本上荒废了,现在决定记录下平时编程遇到的问题或者解决方案。

  第一个为利用Linux操作系统操作系统下的工具来获取网页源码,我用的是Wget,也可以使用卷曲,卷曲的话更加的灵活,可以设置很多参数

  C代码//通过Wget来获取网页stringgethtmlbyget(字符串URL){//获取待下载网页文件名字符串文件名=URL。substr((int)URL。find _ last _ of(/)1);如果(文件名!= ){ string strcom= wget-q ;//wget命令,-问表示不显示下载信息strcom。追加(URL);系统(strcom。c _ str());//执行wgetifstreamfin(文件名。c _ str());如果(!fin){ return " ";} stringstrHtml=charchTemp[1024]=" ";//读取网页文件到内存中while(fin.getline(chTemp,1024)){ strhtml .append(string(chTemp));strcpy(chTemp, );} fin。close();strCom= RM-f ;//删除文件命令,-f表示直接删除不做任何提示strCom.append(文件名);系统(strcom。c _ str());//删除刚才下载下来的文件returnstrHtml//返回网页源码} else { return}}//通过Wget来获取网页

  字符串GetHtmlByWget(字符串网址)

  //获取待下载网页文件名

  字符串文件名=URL。substr((int)URL。find _ last _ of(/)1);

  如果(文件名!=)

  string strCom= wget-q ;//wget命令,-问表示不显示下载信息

  strcom。追加(URL);

  系统(strcom。c _ str());//执行工具

  ifstream fin(文件名。c _ str());

  如果(!鳍)

  返回"";

  字符串strHtml=

  char chTemp[1024]=" ";

  //读取网页文件到内存中

  while(fin.getline(chTemp,1024))

  strhtml。append(string(chTemp));

  strcpy(chTemp, );

  鳍。close();

  strCom= RM-f ;//删除文件命令,-f表示直接删除不做任何提示

  strCom.append(文件名);

  系统(strcom。c _ str());//删除刚才下载下来的文件

  返回strHtml//返回网页源码

  其他

  返回"";

  第二个是用的窝的来获取源码

  C代码//通过得到获取网页源码stringGetHtmlByGet(字符串URL){ stringsrhtmlcontent=" ";intsockfdstructsockaddr _ inaddstructhostent * pURLchartext[RECVBUF];//分析链接UrlInfourlInfo=解析URL(URL);string Accept= Accept:*/* \ r \ n cept-Language:zh-cn \ r \ n cept-Encoding:gzip,deflate ;//不同的主机用户代理不同字符串用户代理= Mozilla/5.0(X11;u;linuxi 686 en-US)apple WebKit/534.10(KHTML,像壁虎)Chrome/8。0 .552 .224 safari/534.10 ;//将端口转换为字符串图表[6];stringsrportsprintf(t, %d ,urlInfo .港口);strPort=t;//构造发送字符串string strrequest=str请求。append( GET );strRequest.append(urlInfo .文件);strRequest.append(?)));strRequest.append(urlInfo .体);str请求。append( HTTP/1.1 \ r \ n );str请求。append(sAccept);str请求。追加( \ r \ n用户代理:);str请求。append(suser代理);str请求。追加( \ r \ n主机:);strRequest.append(urlInfo .主持人);str请求。追加(:);strrequestappend(strPort);strrequestappend( \ r \ n连接:Keep-Alive \ r \ n \ r \ n );char * host=const _ cast char *(urlInfo .主持人。c _ str());sockfd=socket(AF_INET,SOCK_STREAM,IP proto _ TCP);//TCP方式发送pURL=gethostbyname(主机);addr.sin _ family=AF _ INETaddr。sin _ addr。s _ addr=*((无符号long *)pURL-h _ addr);地址。sin _ port=htons(80);//连接connect(sockfd,(structsockaddr*) addr,sizeof(addr));//发送send(sockfd,const _ cast char *(str请求。c _ str()),strRequest.length(),0);//接受while(recv(sockfd,text,RECVBUF,0)0){ strhtmlcontent。追加(文本);bzero(text,RECVBUF);}//关闭插座关闭(sockfd);//返回接受结果returnstrHtmlContent}//通过得到获取网页源码

  字符串GetHtmlByGet(字符串网址)

  string strHtmlContent=

  int sockfd

  结构sockaddr _ in地址

  结构主机* pURL

  char text[RECVBUF];

  //分析链接

  UrlInfo UrlInfo=解析URL(网址);

  string sa cept= Accept:*/* \ r \ n cept-Language:zh-cn \ r \ n cept-Encoding:gzip,deflate ;

  //不同的主机用户代理不同

  string suser agent= Mozilla/5.0(X11;u;Linux i686en-US)apple WebKit/534.10(KHTML,像壁虎一样)Chrome/8。0 .552 .224 Safari/534.10 ;

  //将端口转换为字符串

  char t[6];

  字符串strPort

  sprintf(t, %d ,urlInfo .港口);

  strPort=t;

  //构造发送字符串

  string str request=

  str请求。append( GET );

  strRequest.append(urlInfo .文件);

  strRequest.append(?)));

  strRequest.append(urlInfo .体);

  str请求。append( HTTP/1.1 \ r \ n );

  str请求。append(sAccept);

  str请求。追加( \ r \ n用户代理:);

  str请求。append(suser代理);

  str请求。追加( \ r \ n主机:);

  strRequest.append(urlInfo .主持人);

  str请求。追加(:);

  strrequestappend(strPort);

  strrequestappend( \ r \ n连接:Keep-Alive \ r \ n \ r \ n );

  char * host=const _ cast char *(urlInfo .主持人。c _ str());

  sockfd=socket(AF_INET,SOCK_STREAM,IP proto _ TCP);//TCP方式发送

  pURL=gethostbyname(主机);

  地址. sin _ family=AF _ INET

  addr.sin_addr.s_addr=*(无符号long *)pURL-h _ addr);

  地址。sin _ port=htons(80);

  //连接

  connect(sockfd,(struct sockaddr *) addr,sizeof(addr));

  //发送

  send(sockfd,const _ cast char *(str请求。c _ str()),strRequest.length(),0);

  //接受

  while(recv(sockfd,text,RECVBUF,0) 0)

  strHtmlContent.append(文本);

  bzero(text,RECVBUF);

  //关闭窝

  关闭(sockfd);

  //返回接受结果

  返回strHtmlContent

  使用网络库

  爪哇代码#包含stdio。h #包含字符串。h #包括卷曲/卷曲。h # define MAX _ BUF 65536 charwr _ BUF[MAX _ BUF 1];intwr _ index/* * Writedatacallbackfunction(calledwithinthecontextof * curl _ easy _ perform .*/size_twrite_data(void*buffer,size_tsize,size _ TN member,void * userp){ intsegsize=size * nmemb;/* checktoseeifthisdata超过了缓冲区得强度.如果是这样,* settheuser-definedcontextvalueandreturn 0 oindicatea * problemtocurl .*/if(wr _ index segsize MAX _ BUF){ *(int *)userp=1;return 0 }/* copythedatafromthecurlbufferrintourbuffer */memcpy((void *)wr _ buf[wr _ index],buffer,(size _ t)segsize);/* Updatethewriteindex */wr _ index=segsize;/* Nullterminatethebuffer */wr _ buf[wr _ index]=0;/* returnthenumberofbytes已接收,表示curlthatalisok */returnsegsize;}/* * simplecurlaplicatoreadtheindex。html filefromawebsite。*/int main(void){ CURL * CURL;CURLcoderetintwr _ error wr _ error=0;wr _ index=0;/*第一步,init curl */curl=curl _ easy _ init();如果(!curl){ printf( could TiNi turl \ n );return 0 }/* tellcurltheflofthefilewe reggoingtoretrieve */curl _ easy _ set opt(curl,CURLOPT_URL, www .示例域。com’);/*Tellcurlthatwe 将接收llreceivedatatofunctionwrite _ data,以及* alsovideitwithacontextpointerforourerrorreturn .*/curl_easy_setopt(curl,CURLOPT_WRITEDATA,(void *)wr _ error);curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,write _ data);/* allowcurltoperformatteaction */ret=curl _ easy _ perform(curl);printf( ret=% d(write _ error=% d)\ n ,ret,wr _ error);/* emitthepageifcurrindicatestatnoerrorsoccured */if(ret==0)printf( % s \ n ,wr _ buf);curl _ easy _ clean up(卷曲);返回0

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • shell语句中的case语句使用注意事项,shell脚本中case用法
  • shell语句中的case语句使用注意事项,shell脚本中case用法,Shell编程之case语句实战(小结)
  • shell脚本语法,shell脚本用法
  • shell脚本编程实例,shell脚本编程教程
  • shell脚本编程实例,shell脚本编程教程,Shell脚本编程30分钟入门(小结)
  • shell脚本经典案例,shell脚本实际运用
  • shell脚本经典案例,shell脚本实际运用,非常实用的23个Shell脚本实例
  • shell脚本变量中特殊字符处理,shell特殊字符处理
  • shell脚本变量中特殊字符处理,shell特殊字符处理,shell脚本中28个特殊字符的作用简明总结
  • shell脚本加密三种方法,加密sh脚本解密
  • shell脚本加密三种方法,加密sh脚本解密,shell脚本加密工具shc使用详解
  • shell脚本介绍,shell脚本基本语法详解
  • shell脚本介绍,shell脚本基本语法详解,Shell脚本的超详细讲解(推荐!)
  • shell脚本 if条件语句,shell脚本else if判断
  • shell编程 if,shell脚本if语法
  • 留言与评论(共有 条评论)
       
    验证码: