就是想通过关键词查找网页中的指定内容的网址,当然,这个关键词在网页中出现不止一次,可以从头到尾循环查找。网址也不是固定的。我理解网页获取不是难点,idhttp可以get,主要是字符串处理吧。先谢谢各位了!关键词:指定内容 网址提取 循环 效率

解决方案 »

  1.   

    很有意思的话题。网页解析应该能搜到一些源码,没细究过。有些是为了做爬虫,功能很宽泛,也许超出了你的需求。我想,需要区分是找链接网址还是把文本中的网址都找出来。如果是前者,还是需要按 HTML 规范去解析标签,有点像做爬虫了。如果是后者,那就是去搜字符串。但是不明确你说的“指定内容”是什么含义。如果就是一个关键词,那问题就归结到找到关键词后如何确定它是否网址的一部分,以及如何确定网址的前后边界。这样,问题又归结到如何确定标志性字符串,也许需要做一点语法分析。
      

  2.   

    我理解你的意思是比如 <a href="http://www.baidu.com">百度一下,你就知道</a><a href="http://www.g.cn">谷歌中国</a>,你搜索字符串 百度,那么结果就能匹配到 http://www.baidu.com 这个网址。这样的话,你就可以先把当前页面的所有链接的 href 和 text 给截取出来->数组,然后循环查找text中是否存在你需要的关键词,然后得到一个新的数组。或者在截取的时候进行判断也可以。另外还可以用dom的方式进行循环判断
      

  3.   

    感觉还是遍历 DOM 树比较靠谱。是否还要找文本中嵌入的网址?不妨先把此问题搁置一下,就去遍历 DOM 树中的结点。凡有可能带网址的结点都要分析其属性,像楼上说的 href 属性,还有 src 属性等等,只要取出属性值,它就是网址,然后看其中是否带指定关键词。遍历 DOM 结点,采用递归算法比较简单:写一个递归函数,从根结点出发找子结点,找到子结点后,调用函数自身再去找子结点的子结点。这样,一个递归函数就能完成遍历。
      

  4.   

    我自己用循环的方式可以初步完成需要的功能,但是感觉这种效率比较低,而且在网页较多、关键字较多的情况下,效率更重要。再有就是不同的网页不能保证提取效果。none01和jinghai1776说的dom树遍历我没有接触过。哪位大能可以给个学习的例子。谢谢!
      

  5.   

    我现在查的资料有以下的几种方式可以提取网页中的链接文本和链接地址。
    1、字符串操作
    2、正则表达式
    3、通过mshtml实现html解析
    4、dom树(还没有接触过)哪位达人对以上某种方法有研究,请指教!
      

  6.   

    如果對正則比較熟悉自然用 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;
      

  7.   


    谢谢devhp,你的代码正在学习中。我这几天在看正则,我用正则只能提取到href,但是提不出来链接文本。哪位有空帮忙看看怎么用正则同时提取出链接地址和链接文本。
      

  8.   

    看了你的帖子,跟我的情况一样啊,我也是在做HTML页面的数据抓取。
    如果是小范围的数据,用正则表达式足以。
    但是对于抓取的数据量比较大,就是抓取的条目较多的情况下,效率就成了需要必须保证的问题。
    不知道你的问题解决了没有,有没有相关的资料或者经验传授一下,谢谢。
      

  9.   


    武稀松有个开放源代码的html解析,很好用。
      

  10.   

    使用IDHTTP就可以。