我正在尝试使用Indy http服务器在网页中查找代理过滤器的关键字。我已经设置了一个代理和http服务器,它可以与网络浏览器一起使用,但是当我在网页中找到一个关键字时,我很挣扎。
我一直在尝试将内存流转换为字符串并在其中搜索关键字,但这可能是错误的方法。我对delphi的经验有限,所以我有点卡住了。
如果有人能给我任何指示,那就太好了。
感谢。
编辑:好的我在这里添加了一个函数,其中'Stream'是来自http服务器的内存流,'what'是我正在搜索的关键字,它似乎不起作用....
function FindInMemStream(Stream: TMemoryStream; What: String):Integer;
var
bufBuffer, bufBuffer2: array[0..254] of Char;
i: Integer;
begin
filter.Form2.ListBox1.Items.Add('finding');
What := 'train';
Result := 0;
i := 0;
FillChar(bufBuffer, 255, #0);
FillChar(bufBuffer2, 255, #0);
StrPCopy(@bufBuffer2, What);
Stream.Position:=0;
while Stream.Position <> Stream.Size do
begin
Stream.Read(bufBuffer[0],Length(What));
if CompareMem(@bufBuffer,@bufBuffer2,Length(What)) then
begin
filter.Form2.ListBox1.Items.Add(IntToStr(Stream.Position-Length(What)));
Result := Stream.Position-Length(What); // not 0 : it's found keyphrase
Exit;
end;
i := i + 1;
// filter.Form2.ListBox1.Items.Add(IntToStr(i));
Stream.Seek(i,0)
end;
end;
答案 0 :(得分:2)
有些库可用于HTML解析,例如(商业)DIHtmlParser。
DIHtmlParser从HTML,XHTML和XML中读取,提取信息并编写信息。
从其功能列表中:
使用这样的库,可以从HTML响应中轻松提取HTML内容(可见文本),找到搜索词的剩余任务将变得微不足道。
我不会尝试编写自己的HTML解析器,而是使用现有的库。