zoukankan      html  css  js  c++  java
  • 毕业设计想做一个垂直搜索引擎,关于手机方面

        我毕业设计打算做一个垂直搜索引擎,关于手机方面的,抓取几个主流电商的网站的手机信息,导入到自己的搜索引擎主要实现搜索的比价,以及相关手机的性能参数。导师说最大的困难时抓取信息,这几天分析了京东商城手机方面的html页面原码,发现还是很有规律的:

    1)手机展览的页面公27页(到目前为止),格式是:http://www.360buy.com/products/652-653-655-0-0-0-0-0-0-0-1-1-1.html然后是http://www.360buy.com/products/652-653-655-0-0-0-0-0-0-0-1-1-2.html,只是末尾数据的变化。

    2)手机信息页面是http://www.360buy.com/product/576909.htmlhttp://www.360buy.com/product/+相关编号

    3)用vc写了一个爬虫的雏形,就是抓取展览页的html源码,然后抽取产品信息的url地址,完整的爬虫还没开始写,过段时间在写完了会贴出来:

    //VC++环境
    #include <stdio.h>   
    #include <afxinet.h>
    int main(int argc, char* argv[])   
    {   
        char * url = "http://www.360buy.com/products/652-653-655-0-0-0-0-0-0-0-1-1-1.html";
        CString content;//存储读取的html源码
        printf("%s\n",url);
        //建立httpClient会话
        CInternetSession session("HttpClient");   
        CHttpFile* pfile = (CHttpFile *)session.OpenURL(url);
        DWORD dwStatusCode;   
        pfile -> QueryInfoStatusCode(dwStatusCode); 
    
        if(dwStatusCode == HTTP_STATUS_OK)   
         {   
              
             CString data;
            while (pfile -> ReadString(data))   
             {   
                 content+=data+"\r\n";   
             }
             content.TrimRight();   
            // printf("%s\n" ,(LPCTSTR)content);   
        }
        pfile -> Close();
        delete pfile;
        session.Close();
        printf("%d\n",content.GetLength());
        int hrefStart,hrefEnd;
        hrefStart=hrefEnd=0;
        //寻找html中<a target='_blank' href=#######>的字符串,以提取手机的url
        while((hrefStart=content.Find("<a target='_blank' href=",hrefEnd))!=-1){
            hrefEnd=content.Find(">",hrefStart);
            for(int i=hrefStart;i<=hrefEnd;++i)
                printf("%c",content[i]);
            printf("\n");
        }
        return 0 ;
    } 

    4、虽然c++的效率很高,我还是打算下一步用java来开发爬虫,一方面开发起来会比用c++简单些,另一方面抓取的信息量也不是很大,抓取的网页两不会超过5000页,如果需要优化,再回到c++,先实现任务,在有化任务,最后完美地完成工作。

    5、规划一下过程:

    1)先写爬虫来抓取信息。打算自己写爬虫,虽然有很多开源的爬虫,但是我发现并不太适合垂直搜索引擎的抓取过程,因为要抓取的信息是约束条件比较多,而且每个网站的信息组织形式都不太一样,自己写spider的更容易掌握业务的变化。

    2)提取网页信息。也打算自己写解析工具,一则写起来不难,二则用开源的同样有点杀鸡用牛刀的感觉。

    3)把有关信息导入数据库以便于将来显示相关的页面

    4)建立索引,这里打算用lucene,然后结合ssh建立一个搜索引擎网站,给自己的大学画一个圆满的句号。

         先写到这里,因为一方面准备考研,毕业设计只能慢慢写了。

  • 相关阅读:
    Blank page instead of the SharePoint Central Administration site
    BizTalk 2010 BAM Configure
    Use ODBA with Visio 2007
    Handling SOAP Exceptions in BizTalk Orchestrations
    BizTalk与WebMethods之间的EDI交换
    Append messages in BizTalk
    FTP protocol commands
    Using Dynamic Maps in BizTalk(From CodeProject)
    Synchronous To Asynchronous Flows Without An Orchestration的简单实现
    WSE3 and "Action for ultimate recipient is required but not present in the message."
  • 原文地址:https://www.cnblogs.com/redlight/p/2681295.html
Copyright © 2011-2022 走看看