• 2009/03/25

    关于用XMLHTTP与web取得连接并获取源码 - [子曾经曰过]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://mutou0422.blogbus.com/logs/37009346.html

      一、需求分析

    现需要做个程序通过指定的url来抓取指定的文字或数据,通过程序自动的读取其它网站网页显示的信息,类似于爬虫程序。比方说我们有一个系统,要提取BaiDu网站上歌曲搜索排名。分析系统在根据得到的数据进行数据分析。为业务提供参考数据。 
      为了完成以上的需求,我们就需要模拟浏览器浏览网页,得到页面的数据在进行分析,最后把分析的结构,即整理好的数据写入数据库。那么我们的思路就是: 
      1、发送HttpRequest请求。 
      2、接收HttpResponse返回的结果。得到特定页面的html源文件。 
      3、取出包含数据的那一部分源码。 
      4、根据html源码生成Html文档,循环取出数据。 
      5、写入数据库。 

    二、具体实现

    主要函数解析:

     1、需要用MSXML2命名空间和msxml4.dll动态链接库
     2、CoInitialize(NULL)主要是告诉windows以什么方式为程序创建COM对象。
     3、IXMLHTTPRequestPtr xmlrequest;
     4、fopen_s和fopen的区别:在vs2008中提示fopen是不安全的,需用fopen_s,注意两者返回值的不同。
     5、fwrite和fprintf的区别;

    三、主要问题

    在我们得到网页的源码数据后,需要采用一定的方法进行解析,可以使用正则表达式获得需要的内容。
    这里就会遇到几个问题:
     1、假如网页有框架链接怎么办?
     2、假如网页需要登陆怎么办?
     3、如果程序如上进行的话,为什么我们不直接手动把网页源码保存,再把保存的源码供给程序进行解析呢?
     4、现在将页面代码存入本地的txt文档时,由于不同网页的编码格式的不同,汉字部分出现了乱码现象,还没找到好的解决方法。但我想应该不影响内容在缓冲区里的存储,依旧可以对缓冲区里的内容进行解析。
     5、使用正则表达式是我最初准备用来解析的方法,没有细致学过正则表达式,所以这段代码没有写好。


    收藏到:Del.icio.us