HtmlParser示例及对比说明

delphi html parser

代码是改自原wr960204的 HtmlParser ,因为自己的需求需要对 html 进行修改操作,但无奈只支持读取操作,所以在此基础上做了修改并命名为HtmlParserEx.pas与之区别。

IHtmlElement和THtmlElement的改变:

1、Attributes属性增加Set方法

2、TagName属性增加Set方法

3、增加Parent属性

4、增加RemoveAttr方法

5、增加Remove方法

6、增加RemoveChild方法

7、增加Find方法,此为SimpleCSSSelector的一个另名

8、_GetHtml不再直接附加FOrignal属性值,而是使用GetSelfHtml重新对修改后的元素进行赋值操作,并更新FOrignal的值

9、增加Text属性

IHtmlElementList和THtmlElementList的改变:

1、增加RemoveAll方法

2、增加Remove方法

3、增加Each方法

4、增加Text属性

修改后的新功能的一些使用法

IHtmlElement
EL.Attributes[‘class’] := ‘xxxx’;

 EL.TagName = 'a';

 EL.Remove; // 移除自己

 EL.RemoveChild(El2);

 El.Find('a');

IHtmlElementList
// 移除选择的元素
LHtml.Find(‘a’).RemoveAll;

// 查找并遍沥
// LHtml.Find(‘a’).Each(
procedure(AIndex: Integer; AEl: IHtmlElement)
begin
Writeln(‘Index=’, AIndex, ‘, href=’, AEl.Attributes[‘href’]);
end);

// 直接输出,仅选中的第一个元素
Writeln(LHtml.Find(‘title’).Text);

// 从文件加载示例
procedure Test;
var
LHtml: IHtmlElement;
LList: IHtmlElementList;
LStrStream: TStringStream;
begin
LStrStream := TStringStream.Create(’’, TEncoding.UTF8);
try
LStrStream.LoadFromFile(‘view-source_https___github.com_ying32_htmlparser.html’);
LHtml := ParserHTML(LStrStream.DataString);
if LHtml <> nil then
begin
LList := LHtml.SimpleCSSSelector(‘a’);
for LHtml in LList do
Writeln(‘url:’, lhtml.Attributes[‘href’]);
end;
finally
LStrStream.Free;
end;
end;

源代码下载

https://github.com/ying32/htmlparser

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章