-
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







