• 大小: 1.63MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-06
  • 语言: 其他
  • 标签: crawler  

资源简介

爬网页内容,记录爬过的网址,记录爬的时间,提取URL

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#include “windows.h“

unsigned char mark[8]={0x010x020x040x080x100x200x400x80};//分别表示00000001,00000010...10000000
struct bloom_filter{
unsigned n;
unsigned size;
    unsigned char* bits;//用于存储mark的数组
};
//URL去重所需函数
int Bloom_init(int numstruct bloom_filter* b);
int insert(char* sstruct bloom_filter* b);
int check(char *sstruct bloom_filter* b);
void Del(struct bloom_filter* b);
unsigned int Hash1(char *s);
unsigned int Hash2(char* s);
unsigned int Hash3(char* s);
//抓取网页分析程序所需变量
char Host[1024];
char Dir[1024];
char host[1024];
char cop[1024]=““;
int sock;
struct hostent *hp;
struct sockaddr_in server;
unsigned short port=80;
FILE* file=NULL;//暂时的网页内容存储
FILE* file1=NULL;//Url队列文件
FILE* page=NULL;//所有crawled的网页内容
FILE* result=NULL;//crawled结果
char  match[100];
char  url[1024];
int   flag;
fpos_t filepos;
//socket和网页抓取函数
int  Connecthost();
void analyze();
void sendrequest();
void receive();
void getlink();

struct bloom_filter* b;//bloom filter 存储变量
int main(int argcchar** argv)
{

int num=666666;
int a;
int number;
int p;
WORD   wVersionRequested=MAKEWORD(20);       
    WSADATA   wsaData;     
    int  err=WSAStartup(wVersionRequested&wsaData);     
    if(err!=0)     
  WSACleanup(); 
if((page=fopen(“pages.txt““w“))==NULL) return;
if((result=fopen(“result.txt““w“))==NULL) return;
if((file1=fopen(“Url.txt““a+“))==NULL) return;
Bloom_init(num&b);
printf(“输入要爬取的网页数目:“);
scanf(“%d“&number);
p=1;
while(p<=number)
{
 fgets(host1023file1);
 
 fgetpos(file1 &filepos); 
 analyze();strcpy(copHost);
 memset(url01024);
 strcpy(urlHost);
 strcat(urlDir);
 
 insert(url&b);//如果添加成功

  
 if((flag=Connecthost())==1)//如果连接成功
 {
  printf(“正在爬取第%d个网页%s\n“purl);
      sendrequest();
        receive();
      getlink();
  p++;
 }
 

}
    fclose(file1);
fclose(page);
fclose(result);
Del(&b);
    WSACleanup();
}

int  Connecthost()
{
int m=0;
if((sock=socket(AF_INETSOCK_STREAM0))<0) 
  return m;

if((hp=gethostbyname(Host))==NULL)
  return m;
    server.sin_family = AF_INET;  
    server.sin_port = htons(port);  
server.sin_addr=*((struct in_addr *)(hp->h_addr));

    memset(server.sin_zero08);
    
    if(connect(sock (struct sockaddr*)&serversizeof(server))<0) 
   return m;
m=1;
return m;

}

void analyze()//URL分析函数
{   
int j=0;
    int i=0;
int k=0;
    if(host[0]==‘/‘)
{   memset(Dir01024);
while(host[j]!=‘\0‘)
{Dir[j]=host[j];
 j++;}
Dir[j]=‘\0‘;
strcpy(Hostcop);
}
else
{   
memset(Host01024);
memset(Dir01024);
        for(j=0;j<7;j++)
  match[j]=host[j];
match[j]=‘\0‘;
if((strcmp(match“http://“))!=0)
{
 for(j=0;j<8;j++)
  match[j]=host[j];
 match[j]=‘\0‘;
 if((strcmp(match“https://“))!=0)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4331  2010-10-13 15:08  Crawler\Crawler.dsp

     文件        522  2010-10-13 10:06  Crawler\Crawler.dsw

     文件      58368  2010-10-29 22:18  Crawler\Crawler.ncb

     文件      48640  2010-10-29 22:18  Crawler\Crawler.opt

     文件       4313  2010-10-29 22:00  Crawler\Crawler.plg

     文件     213052  2010-10-29 22:00  Crawler\Debug\Crawler.exe

     文件     286472  2010-10-29 22:00  Crawler\Debug\Crawler.ilk

     文件    2850332  2010-10-29 18:36  Crawler\Debug\Crawler.pch

     文件     566272  2010-10-29 22:00  Crawler\Debug\Crawler.pdb

     文件      30467  2010-10-29 22:00  Crawler\Debug\main.obj

     文件      33792  2010-10-29 22:10  Crawler\Debug\vc60.idb

     文件      69632  2010-10-29 22:00  Crawler\Debug\vc60.pdb

     文件        996  2010-10-29 22:12  Crawler\file.txt

     文件       7913  2010-10-29 21:02  Crawler\main.c

     文件    2878026  2010-10-29 22:12  Crawler\pages.txt

     文件     499719  2010-10-29 22:12  Crawler\result.txt

     文件         46  2010-10-29 22:16  Crawler\Url.txt

     目录          0  2010-10-29 22:18  Crawler\Debug

     目录          0  2010-10-29 22:18  Crawler

----------- ---------  ---------- -----  ----

              7552893                    19


评论

共有 条评论