2017-09-22 关于C++获取网页的一些心得

来源:互联网 发布:java环境搭建教程 编辑:程序博客网 时间:2024/05/21 17:07

       因为个人关系,最近学习了怎样用C++代码获取网页源码,并通过处理字符串的方式获取自己想要的内容,不得不说那些封装好的类确实挺好用的。

       为了写窗口方便我就用了MFC,emmm...发现以前用API写的我好傻哦。

       C++获取网页我用的是CInternetSession和CHttpFile这两个来获取的,不说了,先上代码:

                CInternetSession Session;CHttpFile *pHttpFile = NULL;pHttpFile = (CHttpFile*)Session.OpenURL(WebUrl);if (pHttpFile == NULL){Session.Close();return;}

       不过在使用的时候要包括头文件<afxinet.h>这个头文件,短短这几句话就可以获得网页源码,很简单吧,这里的WebUrl是一个字符串,我用的是CString这个类,觉得挺好用的。这样获取后我是用

       pHttpFile->ReadString(一个自定义的CString类)

       这样一行一行的获取源码内容,然后通过处理字符串的形式来获取自己想要的信息,比如网页的title啊什么的,当然还要有一点html的基础,因为这样你才知道哪些地方会出现你不想要的标签什么的。当然我不清楚我这样做算不算对,毕竟是初学者,不过除了比较麻烦之外还是没有什么问题的。当然C++也有正则表达式,不过我不会真是遗憾,会的人做这个就简单很多吧,我也不清楚也没做过。

       不过中间可能遇到很多坑,可能会遇到连接服务器超时,或者网址有问题啊什么鬼的,可能会抛出异常,所以加一句捕获异常更好一些,不然程序可能会在一个莫名其妙的时间退出。然后还有就是可能会因为获取网址服务器原因造成延时获取之后, 获取了一段不完整源码后退出然后啥也没有了的情况,反正我出现过,而且现在原因不明,还是我太菜了吧。

       顺带一提,这里不用CHttpFile也可以,直接用CStdioFile也是没有毛病的,可以用ReadString,但是要注意的是CHttpFile提供了一些其他的方法,所以看你需要什么功能再看怎么使用,像我就只是获取源码看看就可以用CStdioFile, 当然OpenURL还有其他参数,具体的请多查阅资料了解。