在html文件中提取所有的img

lisavivi 2008-10-31 04:39:46
c++builder中,输入是一个网页的地址,输出是所有的img tag.
请问如何做到?
比如提取出<img src="011232690_files/top3.gif" border="0">
...全文
260 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lisavivi 2008-11-04
  • 打赏
  • 举报
回复
谢谢 最后我自己写了个程序解析html了。。
jxw1987628 2008-11-01
  • 打赏
  • 举报
回复

#include <mshtml.h>
#include "SHDocVw_OCX.h"


//一些接口指针变量的定义
IDispatch* pDisp=NULL;
IWebBrowser2 *iWebBrowser=NULL;
IHTMLDocument2* pDoc=NULL;
IHTMLElementCollection*pColl=NULL;

//获取IWebBrowser2接口。
CoCreateInstance(CLSID_CppInternetExplorer,NULL,CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2,
(void**)&iWebBrowser);
iWebBrowser->set_Visible(true);//使程序运行时IE窗口可见,因为这是在调用IE的接口
//这里打开你要的目标网页的url,Edit1->Text就是传递这个url的
iWebBrowser->Navigate2(TVariant(Edit1->Text),TNoParam(),
TNoParam(),TNoParam(),TNoParam());
//这个参数用来保存打开这个网页时IE的状态栏上的文字,一般页面完全加载后就是显示”完成“
BSTR wsStatus;
String s4BSTR="";
iWebBrowser->get_Document(&pDisp);//得到IHTMLDocument接口
pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);
pDisp->Release();
BSTR wsTitle;
pDoc->get_title(&wsTitle);
s4BSTR=String(wsTitle);
if(s4BSTR=="找不到服务器")
{
Application->MessageBox("网页打开失败!","",MB_OK);
pDoc->Release();Application->Terminate();
}
//得到HtmlElementCollection,这个应该是包含网页上元素的集合接口
pDoc->get_all(&pColl);
long itemcount=0;
pColl->get_length(&itemcount);//得到元素集合的总数
for(int i=0;i<itemcount;i++) //循环遍历所有的元素
{
pColl->item(TVariant(i),TVariant(i),&pDisp); //先获得IDispatch接口
//对图片的操作
IHTMLImgElement *img=0; //这种接口就是针对图片元素的
pDisp->QueryInterface(IID_IHTMLImgElement,(void**)&img);
if(img!=0)
{
WideString strimg,strMIME,strSrc;
img->get_href(&strimg); //得到其href
img->get_mimeType(&strMIME); //得到其MIME文件类型
Memo2->Lines->Add(strimg+" [--"+strMIME+"--]"); //将信息添加至memo中
}
}


小笨象 2008-10-31
  • 打赏
  • 举报
回复
老大就是老大。
强。收藏一下。
lisavivi 2008-10-31
  • 打赏
  • 举报
回复
iWebBrowser->Navigate2(TVariant(Edit1->Text),TNoParam(),
TNoParam(),TNoParam(),TNoParam());
这一句我过不去
lisavivi 2008-10-31
  • 打赏
  • 举报
回复
jxw1987628 你好,我看不大懂你给的代码,可以有点注释吗?有没有要include的?
jxw1987628 2008-10-31
  • 打赏
  • 举报
回复
给点我回答的以前的帖子的代码你参考


IDispatch* pDisp=NULL;
IWebBrowser2 *iWebBrowser=NULL;
IHTMLDocument2* pDoc=NULL;
IHTMLElementCollection*pColl=NULL;


CoCreateInstance(CLSID_CppInternetExplorer,NULL,CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2,
(void**)&iWebBrowser);
iWebBrowser->set_Visible(true);

iWebBrowser->Navigate2(TVariant(Edit1->Text),TNoParam(),
TNoParam(),TNoParam(),TNoParam());
BSTR wsStatus;
String s4BSTR="";
iWebBrowser->get_Document(&pDisp);
pDisp->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc);
pDisp->Release();
BSTR wsTitle;
pDoc->get_title(&wsTitle);
s4BSTR=String(wsTitle);
if(s4BSTR=="找不到服务器")
{
Application->MessageBox("网页打开失败!","",MB_OK);
pDoc->Release();Application->Terminate();
}
//得到HtmlElementCollection
pDoc->get_all(&pColl);
long itemcount=0;
pColl->get_length(&itemcount);
for(int i=0;i<itemcount;i++)
{
pColl->item(TVariant(i),TVariant(i),&pDisp);
//对图片的操作
IHTMLImgElement *img=0;
pDisp->QueryInterface(IID_IHTMLImgElement,(void**)&img);
if(img!=0)
{
WideString strimg,strMIME,strSrc;
img->get_href(&strimg);
img->get_mimeType(&strMIME);
Memo2->Lines->Add(strimg+" [--"+strMIME+"--]");
}
}

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧