socket-c语言正则表达式抓取网站的<title>

问题描述

c语言正则表达式抓取网站的<title>

本程序的功能是搜索网站的

字段的值
遗憾的是并不通用:ps:我也不知道为什么失败

问题1:正则表达式或运算消除标签大小写后匹配不到字符串
问题2:正则表达式实现零宽断言后发现匹配不到字符串
问题3:在科大官网上测试

成功 在其他网站可能会失败

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <regex.h>//正则表达式

#define BUF_SIZE 512

int reptile_regex(char * buf);

char ch[100000];

int main(int argc,char *argv[])
{
struct sockaddr_in servAddr;
struct hostent * host;
int sockfd;
char sendBuf[BUF_SIZE],recvBuf[BUF_SIZE];
int sendSize,recvSize;

host=gethostbyname(argv[1]);
if(host==NULL)
{
perror("dns 解析失败");
}
servAddr.sin_family=AF_INET;
servAddr.sin_addr=*((struct in_addr *)host->h_addr);
servAddr.sin_port=htons(atoi(argv[2]));
bzero(&(servAddr.sin_zero),8);

sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1)
{
perror("socket 创建失败");
}

if(connect(sockfd,(struct sockaddr *)&servAddr,sizeof(struct sockaddr_in))==-1)
{
perror("connect 失败");
}

//构建一个http请求
sprintf(sendBuf,"GET / HTTP/1.1rnHost: %srnConnection: keep-alivernrn",argv[1]);
if((sendSize=send(sockfd,sendBuf,BUF_SIZE,0))==-1)
{
perror("send 失败");
}
//获取http应答信息
memset(recvBuf,0,sizeof(recvBuf));
memset(ch,0,sizeof(ch));
char pattern[128]={0};
while(recvSize=recv(sockfd,recvBuf,BUF_SIZE,0)>0)
{
//printf("%s",recvBuf);
strcat(ch,recvBuf);
memset(recvBuf,0,sizeof(recvBuf));
}
reptile_regex(ch);

return 0;
}

//第一个参数是要匹配的字符串,第二个参数是匹配的规则,返回匹配的个数
int reptile_regex(char* buf)
{
const char* pattern="<TITLE>.*<\/TITLE>";
int cflags= REG_EXTENDED;
const size_t nmatch=10;//结构体数组长度
regmatch_t pm[10];//结构体数组 存放匹配文本串的位置信息
regex_t reg;//正则表达式指针
char* str;
str=buf;//str目标字符串
regcomp(&reg,pattern,0);//编译匹配模式
while(regexec(&reg,str,nmatch,pm,0)==0)
{
for(int j=pm[0].rm_so;j<pm[0].rm_eo;++j)
{
printf("%c",str[j]);
}

printf("n");
str=str+pm[0].rm_eo;
}
regfree(&reg);
return 0;
}

解决方案

 #include <regex.h>
这东西还有bug

建议你试试boost的regex
时间: 2024-09-09 13:38:48

socket-c语言正则表达式抓取网站的&amp;lt;title&amp;gt;的相关文章

详解JAVA抓取网页的图片,JAVA利用正则表达式抓取网站图片_java

利用Java抓取网页上的所有图片: 用两个正则表达式: 1.匹配html中img标签的正则:<img.*src=(.*?)[^>]*?> 2.匹配img标签中得src中http路径的正则:http:\"?(.*?)(\"|>|\\s+) 实现: package org.swinglife.main; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream;

利用正则表达式抓取博客园列表数据_正则表达式

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

利用正则表达式抓取博客园列表数据

鉴于我在要完成的asp.net MVC 3 仿照博客园企业系统要用到测试数据,我自己输入太累,所以我就抓取了博客园的部分列表数据,还请dudu不要见怪. 在抓取博客园数据的时候采用了正则表达式,所以有不熟悉正则表达式的朋友可以参考相关资料,其实很容易掌握,就是在具体的实例中会花些时间. 现在我就来把我抓取博客园数据的过程叙述一下,如果有朋友有更好的意见,欢迎提出来. 要使用正则表达式抓取数据,首先就要创建一个正则表达式进行匹配,我推荐使用regulator,这个正则表达式工具,我们可以先使用这个

JAVA使用爬虫抓取网站网页内容的方法_java

本文实例讲述了JAVA使用爬虫抓取网站网页内容的方法.分享给大家供大家参考.具体如下: 最近在用JAVA研究下爬网技术,呵呵,入了个门,把自己的心得和大家分享下 以下提供二种方法,一种是用apache提供的包.另一种是用JAVA自带的. 代码如下: // 第一种方法 //这种方法是用apache提供的包,简单方便 //但是要用到以下包:commons-codec-1.4.jar // commons-httpclient-3.1.jar // commons-logging-1.0.4.jar

httpunit-java 正则表达式 抓取2行特定中文词语中的一段中文

问题描述 java 正则表达式 抓取2行特定中文词语中的一段中文 老师让我们做一个能从汉字网站http://hanyu.iciba.com上抓取汉字信息的爬虫,现在遇到了一个难题,下面是我用httpunit解析出来的某个字的部分信息. 龙 繁体 龍 笔画 5笔 造字法 原为形声 部首 龙部 五笔 DXV 结构 单一结构 比如说现在我要截取这个字的部首,也就是部首和五笔这2行字中间的那段字,那正则表达式是不是就是"部首.五笔",但是这样做了之后什么也没有截取出来,能告诉我怎么写这个表达式

PHP正则表达式抓取某个标签的特定属性值的方法_正则表达式

php正则学了一些日子,抓了一些网站的数据,从而发现每次都自己写正则重新抓很麻烦,于是就想写一个抓取特定标签具有特定属性值的接口通用,直接上代码. //$html-被查找的字符串 $tag-被查找的标签 $attr-被查找的属性名 $value-被查找的属性值 function get_tag_data($html,$tag,$attr,$value){ $regex = "/<$tag.*?$attr=\".*?$value.*?\".*?>(.*?)<\

PHP正则表达式抓取某个标签的特定属性值的方法

php正则学了一些日子,抓了一些网站的数据,从而发现每次都自己写正则重新抓很麻烦,于是就想写一个抓取特定标签具有特定属性值的接口通用,直接上代码. //$html-被查找的字符串 $tag-被查找的标签 $attr-被查找的属性名 $value-被查找的属性值 function get_tag_data($html,$tag,$attr,$value){ $regex = "/<$tag.*?$attr=\".*?$value.*?\".*?>(.*?)<\

C# Winform项目,如何实现定期抓取网站中指定栏目中的内容

问题描述 C# Winform项目,如何实现定期抓取网站中指定栏目中的内容 在C# Winform项目中,想通过"网络爬虫"定时抓取某个网站中的指定某个菜单中的内容(指定某个菜单的内容有可能是列表,也有可能纯文字或文字加图片的说明内容). 注:指定某个菜单中的内容是列表的话,"网络爬虫"既可以抓取列表也可以抓取列表对应的每条明细内容 请问各位,有没有能实现上述功能"网络爬虫"的相关资料,最好能提供"网络爬虫"相关DEMO.谢谢

php抓取网站图片并保存的实现方法_php技巧

php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享给大家,代码如下: 以上就是为大家分享的php抓取网站图片并保存的实现方法,希望对大家的学习有所帮助.