多谢Arias的建议.
我的网站的内容都是动态的,我考虑使用下面这种方法:
首先得到网站的首页,然后分析页面内的链接,再根据链接得到下一层的页面内容,依次得到网站内所有的动态内容(如果层数太多,则只取4层以内),将查到的页面放入数据库中。需要检索时在数据库中检索内容即可,数据库隔一段时间更新一次。
我的思路就是这些,只是对网页内链接的分析不会,这个问题太麻烦。
请大家多多指教。
我的网站的内容都是动态的,我考虑使用下面这种方法:
首先得到网站的首页,然后分析页面内的链接,再根据链接得到下一层的页面内容,依次得到网站内所有的动态内容(如果层数太多,则只取4层以内),将查到的页面放入数据库中。需要检索时在数据库中检索内容即可,数据库隔一段时间更新一次。
我的思路就是这些,只是对网页内链接的分析不会,这个问题太麻烦。
请大家多多指教。
解决方案 »
- java已经有了GC为什么内存还是会出现问题呢?求解释
- 求一条HQL语句!内附实体类结构和需求描述...
- 不想让tomcat启动时输出debug日志 怎么设置tomcat的日志级别啊
- 关于搜索页码分页显示!急,请帮帮忙!
- 请问一下 java EE SDK 怎么用啊?
- 在hibernate一对多的双向关联中,如果one方和many方的持久化对象均发生了变化,hibernate会怎么做?会执行哪些sql语句,为什么?
- struts传递多个参数(在线)
- Linux下使用TOMCAT时System.getProperty("user.dir")路径问题?
- 如何读下一行
- 关于j2ee的下载问题
- 请问 如何对jar文件象通过winrar对java 文件进行加密那样简单;
- torque使用问题
可以分析<a href="xxxxxxxx">xxx</a>
/**
* <a 开头输入
* return hrefValue
*/
char* parsetaga(char* strtag)
{
const char tokseps[] = " >\"\t\r\n";
char* t;
t = strtok(strtag,tokseps);
// printf("%s",t);
while(t){
// printf("%s\n",t);
if(strlen(t)>4){
if(!strncmp("href=",t,5)){/* href= */
if(strlen(t)>5){/*href=http://... || /index.html... */
t+=5;
}else{/*href=[]http://... || href= []/index.html... */
t = strtok(NULL,tokseps);
}
// printf("$%s$\n",t);
return t;
}
}else{
if(!strncmp("href",t,4)){/*href =http://... || /index.html... */
t = strtok(NULL,tokseps);
if(strlen(t)>1) {/* =http */
t+=1;
}else{/* = */
t = strtok(NULL,tokseps);/* url*/
}
// printf("$%s$\n",t);
return t;
}
}
t = strtok(NULL,tokseps);
}
return NULL;}void thread_write(void*){
for(;;){
if(mbuf->lock!=1){/* if mbuf->data not filld then wait*/
for(;;){
if(mbuf->lock == 1)break;
_sleep(1);
}/*for*/
}/*if*/
mbuf->lock = 0;
{
char * c;
char * p = mbuf->data;
char * e;
char buf[2048];
for(;;){/*parse doc*/
memset(buf,0,2048);
if((p = strchr(p,'<'))){
if((e = strstr(p,"</"))){
strncpy(buf,p,e-p+1);
if(c = parsetaga(buf)){
printf("%s\n",c);
}
p = e+1;
}else {
break;
}
}else{
break;
}
}
}
mbuf->lock = -1;/* mbuf->data isused */
}
}
void thread_read(void*){
char buff[BUF_SIZE];
mbuf = (BUF)malloc(sizeof(BUF));
FILE *fp;
size_t read = 0;
fp = fopen("c:\\index.htm","r");
mbuf->lock = -1;
for(;;){
memset(buff,0,BUF_SIZE);
read = fread(buff,sizeof(char),BUF_SIZE,fp);
if(read>0){
// printf("%s",buff);
if(mbuf->lock != -1)/* if mbuf->data not isused then wait*/
for(;;){
if(mbuf->lock == -1){
_sleep(1);
break;
}
}
mbuf->lock = 0;
mbuf->data = strdup(buff);
mbuf->lock = 1;
}else{
break;
}
} fclose(fp);
}int main(int argc, char* argv[])
{
_beginthread((void(__cdecl*)(void*))thread_read,0,NULL);
_beginthread((void(__cdecl*)(void*))thread_write,0,NULL);
_endthread();
// while(mbuf->data != NULL){
// _sleep(1);
// }
//<br> <a href></a> <br/>
// char* tag = (char*)malloc(BUF_SIZE);
// memset(tag,0,BUF_SIZE);
// strcpy(tag,"adfsad<a href= >a< / a>");
// printf(endTag(tag));
return 0;
}