如何提取某个网页的图片,并把图片存在硬盘上?急呀,在线等!!! 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.360doc.com/showWeb/0/0/48793.aspx用正则提取出图片标签地址,再wininet下载就可以了 1 .winint 下载 指定地址的文件 2 . 解析 html 取出<img>标示的内容 用wininet是最简单的办法了,当然也可以用socket不过太麻烦了,具体步骤大致如下:1)首先包含wininet的相关头文件#include <afxinet.h>2)然后CInternetSession m_Session;CHttpConnection* m_pConnection;CHttpFile* pFile;m_pConnection = m_Session.GetHttpConnection("www.163.com(当然换成你自己的域名)"); pFile=m_pConnection->OpenRequest(1,"/1.jpg"(这里换成你自己的图片的相对路径));pFile->SendRequest();3) 发送请求之后,pFile里面存的就是服务器返回的图片数据,可以大致这样读出来 const int BUF_SIZE = 10*1024; // 换成你自己的大小,这里是10K,换成一个足 // 够大的空间一次读出来 char buffer[BUF_SIZE]; int nTotal = pFile->Read(buffer,BUF_SIZE-1); buffer[nTotal]='\0'; CFile cf; CFileException; try { cf.Open("c:\\1.jpg(换成你自己的地址)",CFile::modeCreate|CFile::modeWrite); cf.Write(buffer,nTotal); cf.Close(); } catch (CFileException* e) { e->Delete(); // 失败 return false; }4) 最后别忘释放资源,代码略大致代码就是如此了,还有什么问题可以给我发站内短信,不大常来这里了呵呵 pFile->SendRequest()这个语句没法执行,不知怎么回事? pFile->SendRequest();无法执行?那你肯定是前面出问题了,具体函数用法你可以看看msdn你的GetHttpConnection里面的地址写对了吗?注意不要加"http://"啊那些代码应该是没问题的,我的识别验证码程序里就是这么用的呵呵 或者是OpenRequest的地址不对,你的验证码的链接是什么我帮你看看? 行了,因为加了"http://",谢谢小猪。 求教gpu与dsp的比较 有了解AD的同志们过来看下, 关于重载OnfileOpen()的诡异情况!!! VS2005中可不可以装一个VA之类的东东? 自己写了一个ocx控件,出了点小问题,大家看看是为什么。谢谢 关于编译原理~~~~高手请进 char* 和BSTR 内容如下??? 关于alt键的问题? OpenGL 1.3/2.0 可下载? 用ADSL的朋友一定要进来 基础字符转换 多语言的问题
2 . 解析 html 取出<img>标示的内容
#include <afxinet.h>2)然后
CInternetSession m_Session;
CHttpConnection* m_pConnection;
CHttpFile* pFile;m_pConnection = m_Session.GetHttpConnection("www.163.com(当然换成你自己的域名)");
pFile=m_pConnection->OpenRequest(1,"/1.jpg"(这里换成你自己的图片的相对路径));
pFile->SendRequest();3) 发送请求之后,pFile里面存的就是服务器返回的图片数据,可以大致这样读出来 const int BUF_SIZE = 10*1024; // 换成你自己的大小,这里是10K,换成一个足
// 够大的空间一次读出来
char buffer[BUF_SIZE];
int nTotal = pFile->Read(buffer,BUF_SIZE-1);
buffer[nTotal]='\0'; CFile cf;
CFileException;
try
{
cf.Open("c:\\1.jpg(换成你自己的地址)",CFile::modeCreate|CFile::modeWrite);
cf.Write(buffer,nTotal);
cf.Close();
}
catch (CFileException* e)
{
e->Delete();
// 失败
return false;
}4) 最后别忘释放资源,代码略大致代码就是如此了,还有什么问题可以给我发站内短信,不大常来这里了呵呵
你的GetHttpConnection里面的地址写对了吗?注意不要加"http://"啊那些代码应该是没问题的,我的识别验证码程序里就是这么用的呵呵