很有意思的话题。网页解析应该能搜到一些源码,没细究过。有些是为了做爬虫,功能很宽泛,也许超出了你的需求。我想,需要区分是找链接网址还是把文本中的网址都找出来。如果是前者,还是需要按 HTML 规范去解析标签,有点像做爬虫了。如果是后者,那就是去搜字符串。但是不明确你说的“指定内容”是什么含义。如果就是一个关键词,那问题就归结到找到关键词后如何确定它是否网址的一部分,以及如何确定网址的前后边界。这样,问题又归结到如何确定标志性字符串,也许需要做一点语法分析。
感觉还是遍历 DOM 树比较靠谱。是否还要找文本中嵌入的网址?不妨先把此问题搁置一下,就去遍历 DOM 树中的结点。凡有可能带网址的结点都要分析其属性,像楼上说的 href 属性,还有 src 属性等等,只要取出属性值,它就是网址,然后看其中是否带指定关键词。遍历 DOM 结点,采用递归算法比较简单:写一个递归函数,从根结点出发找子结点,找到子结点后,调用函数自身再去找子结点的子结点。这样,一个递归函数就能完成遍历。
如果對正則比較熟悉自然用 idhttp 好。若不然直接用webbrowser打開歷遍所有鏈接的innertext是否包含有指定關鍵字。 doc:=webbroser.oleobject.document.links; for i=0 to doc.count-1 do begin if pos('關鍵字',doc.item(i).innertext)>0 then memo1.lines.add(doc.item(i).innertext+':'+doc.item(i).href); end;
1、字符串操作
2、正则表达式
3、通过mshtml实现html解析
4、dom树(还没有接触过)哪位达人对以上某种方法有研究,请指教!
doc:=webbroser.oleobject.document.links;
for i=0 to doc.count-1 do begin
if pos('關鍵字',doc.item(i).innertext)>0 then
memo1.lines.add(doc.item(i).innertext+':'+doc.item(i).href);
end;
谢谢devhp,你的代码正在学习中。我这几天在看正则,我用正则只能提取到href,但是提不出来链接文本。哪位有空帮忙看看怎么用正则同时提取出链接地址和链接文本。
如果是小范围的数据,用正则表达式足以。
但是对于抓取的数据量比较大,就是抓取的条目较多的情况下,效率就成了需要必须保证的问题。
不知道你的问题解决了没有,有没有相关的资料或者经验传授一下,谢谢。
武稀松有个开放源代码的html解析,很好用。