解决方案 »
- [求思路]Dephi与外部程序通讯
- 求助:立方米输入问题
- 大家来讨论讨论ADO和BDE的区别和各自的优劣~~
- 如何把SQL中的记录值与Treeview联系起来,在线等…
- 方法的覆盖和重载是一个意思吗?概念上和使用上有什么不同?
- 如何在Delphi中调用WINRAR或WINZIP动态链接库的接口???(急,急,急......)
- 有關統計數據時(SUM),如果記錄數為0的情況下,怎么樣返回0而不是null?
- 怎样检测磁盘是否有变化
- 如何让一个程序永久置与窗口列表底部,,
- 强烈要求在Delphi论坛中再做问题分类,比如(图象、数据库、控件、消息...)等 300人有1分,先来先得
- 哪位有支持Delphi2009的AdvStringGird控件啊,谢谢
- 关于StarUml的介绍的翻译问题
s := WebBrowser1.OleObject.document.parentWindow.content.innerText;
Memo1.Text := s; //这是 content 标签中的文本就得寫在DownloadComplete事件中 並且WebBrowser1.ReadyState=3你所謂的『直接显示文本』也不可能不下載就直接能顯示的,就算用IDHTTP或者IEDownload1也得有個下載過程,然後再提取你要的吧如果你不下載就直接把那個網頁中的文本給SHOW出來了,請一定要通知我一聲。
中加加一句:
WebBrowser1.Navigate(Edit1.Text);
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
application.ProcessMessages;
s := WebBrowser1.OleObject.document.parentWindow.content.innerText;
Memo1.Text := s; //这是 content 标签中的文本
正如yshuui大侠所说的,比如我想过滤下面页面中的源代码,或者禁止执行整个网页中的script,那该如何做呢 ?
谢谢<center><script type="text/javascript"><!--
google_ad_client = "pub-2861391824702976";
/* 336x280, 创建于 10-3-8 */
google_ad_slot = "2199590706";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></center>
[DownloadImages,DownloadVideos,DownloadBGSounds,DontExecuteScripts,DontExecuteJava,DontDownloadFrame]
用EmbeddedWB确实可以定制过滤,如果不想使用控件,可以参考一下它的代码,写到自己的程序里。
没有仔细去研究,你自己看一下吧。
imgs: OleVariant;
begin
imgs := WebBrowser1.OleObject.Document.getElementsByTagName('img');
for i := 0 to imgs.Length - 1 do
begin
imgs.item(i).src:=....end;
end;
你试试把img换成ALL行不,然后自己分析什么是需要的。或者
var
doc:IHTMLDocument2;
all:IHTMLElementCollection;
item:OleVariant;
begin
doc:=WebBrowser1 .Document as IHTMLDocument2;
all:=doc.all; //doc.Links亦可
len:=all.length;
for i:=0 to len-1 do begin
...自己分析吧
end;
end;
yshuui兄,按照你代码的意思是,先把网页下载回来,显示在WebBrowser1,再进行过滤,然后提取自己想要的 ?但我的目的是,把网页下载回来后,不要显示在WebBrowser1上,先进行提取,再把提取出来的文本显示再WebBrowser1上
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='http://www.3ghxw.com/files/article/html/9/9547/2879756.html';
end;procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
WebBrowser1.Navigate(Edit1.Text);
s := WebBrowser1.OleObject.document.parentWindow.content.innerText;
Memo1.Text := s; //这是 content 标签中的文本
end;
http://www.pudn.com/downloads126/sourcecode/others/detail533054.html WebPickUp 将网页上的文字提取下来保存在本地数据文件的工具
http://www.pudn.com/downloads79/sourcecode/windows/file/detail305814.html有没有人有这个网站的账号?谢谢
http://www.pudn.com/downloads49/sourcecode/windows/network/detail169204.html
期待高手更完美的解决方法
我的代码如下,思路是利用 IXMLHTTPRequest 获取网页源代码,在调用函数GetStr截取需要的代码
之所以不用IndyHTTP,是因为IndyHTTP有些网页的源代码获取不到uses msxml;//从网页源文件中获得指定标签间的代码function TForm1.GetStr(StrSource, StrBegin, StrEnd: string): string;
var
in_star, in_end: integer;
begin
in_star := AnsiPos(strbegin, strsource) + length(strbegin);
in_end := AnsiPos(strend, strsource);
Result := copy(strsource, in_star, in_end - in_star);
end;//信息列表点击procedure TForm1.btn1Click(Sender: TObject);
const
url = 'http://www.xxx.com';
var
req: IXMLHTTPRequest;
StrStream: TStringStream;
SetNoteStr: string;
begin
//利用 IXMLHTTPRequest 获取网页源代码,在调用函数GetStr截取需要的代码
req := CoXMLHTTPRequest.Create;
req.open('Get', url, False, EmptyParam, EmptyParam);
req.send(EmptyParam);
SetNoteStr := GetStr(req.responseText, '</script></center>', 'document.body.oncopy=function');//获取标签直接的代码
StrStream := TStringStream.Create(SetNoteStr);
try
StrStream.Position := 0;
(WebBrowser.Document as IPersistStreamInit).Load(TStreamadapter.Create(StrStream));//直接写入WebBrowser
finally
StrStream.Free;
end;
一开始我也是用idhttp來get,但试了不少页面,有些不行,所以才改成IXMLHTTPRequest。
我找了个例子,按照他的提示做,提示“未将对象引用设置到对象的实例”。
后来又添加了以下代码,还是不行
procedure TForm1.FormCreate(Sender: TObject);
begin
HTTPRIO1.Service := 'WeatherWebService';
HTTPRIO1.Port := 'WeatherWebServiceSoap';
HTTPRIO1.WSDLLocation := 'http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl';
end; 1.用WSDL Import导入http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
2.生成一个VCL工程,向界面添加HTTPRIO(WebService栏),设置好其WSDL、Service、Port
3.添加按钮
procedure TForm1.Button1Click(Sender: TObject);
var
Wp:WeatherWebServiceSoap;
AOS:ArrayOfString;
I:Integer;
begin
Wp:=HTTPRIO1 as WeatherWebServiceSoap;
AOS:=wp.getWeatherbyCityName('石家庄');//此处写成一个变量
for I:=Low(AOS) to High(AOS) do
begin
showmessage(AOS[I]);
end;
end;
4.运行