html5读delphi数据,Delphi HTML解析器

Delphi html parser

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

修改记录

2016年11月23日

1、简单支持XPath,简单的吧,利用xpath转css selector,嘿

xpath转换的代码改自python版本 另外对正则System.RegularExpressions.pas中TGroupCollection.GetItem进行了改进,没有找到命名组 且非PCRE_ERROR_NOSUBSTRING时返回空的,而不是抛出一个异常。暂时就简单粗爆的直接改吧,官方网站 上看到有人提过这个QC,不知道后面有没有解决。

IHtmlElement

LHtml.FindX('/html/head/title').Each(

procedure(AIndex: Integer; AEl: IHtmlElement)

begin

Writeln('xpath index=', AIndex, ', a=', AEl.Text);

end

);

2016年11月15日

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属性

10、修改InnerText与Text属性增加write功能

11、增加AppedChild方法

IHtmlElementList和THtmlElementList的改变:

1、增加RemoveAll方法

2、增加Remove方法

3、增加Each方法

4、增加Text属性

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

IHtmlElement

// 修改属性

EL.Attributes['class'] := 'xxxx';

// 修改标记

EL.TagName = 'a';

// 移除自己

EL.Remove;

// 移除子结点

EL.RemoveChild(El2);

// css选择器查找,简化用

El.Find('a');

// 附加一个新的元素

el2 := El.AppendChild('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);

源代码下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值