如何解析html网页? 以自动下载页面中的链接 ( 积分: 75 )

  • 主题发起人 主题发起人 viery
  • 开始时间 开始时间
V

viery

Unregistered / Unconfirmed
GUEST, unregistred user!
因为html没有xml规范,解析起来比较麻烦。

请问有什么控件可以实现? 还是自己实现比较方便?

有什么例子可以提供也谢过了!
 
因为html没有xml规范,解析起来比较麻烦。

请问有什么控件可以实现? 还是自己实现比较方便?

有什么例子可以提供也谢过了!
 
没试过!你用用看看可不可以!
提取网页中所有链接
  这个方法来自大富翁论坛hopfield朋友的对一个问题的回答。

  var
   doc:IHTMLDocument2;
   all:IHTMLElementCollection;
   len,i:integer;
   item:OleVariant;
  begin
   doc:=WebBrowser1 .Document as IHTMLDocument2;
   all:=doc.Get_links;             //doc.Links亦可
   len:=all.length;
   for i:=0 to len-1 do begin
    item:=all.item(i,varempty);        //EmpryParam亦可
    memo1.lines.add(item.href);
   end;
  end;
 
多谢h6003113。

其实这个问题的关键是如何找到页面中你想要的链接, 从而需要解析html。
找到所有的链接,或许很多是无效的连接。
 
那你认为想要的连接,和其他那些无效的连接的区别是什么呢?
 
hs-kill,

有效的链接就是你想要的链接, 你要定位到这个链接,比如一个网页里有100个对你来说没什么有价值的链接, 而只有有一个是你想要的,如何定位到这个链接,要一层层解析下去。
 
能不能对html的网页代码进行分析,找到href后的链接,再根据你想要的东西进行检索。菜鸟意见,呵呵
 
TO:viery。。。。看了你的解释。。。。。没看懂。。。。^v^

你是不是说,所谓的有效连接就是你认为有效的连接啊。。。也就是说对于一个连接是否为有效连接是由你人为定的喽?
那h6003113的回答已经可以实现了啊,他是把所有连接都取出来显示到memo里

至于是不是有效连接。。。。你在他的循环里做判断不就行了?
   for i:=0 to len-1 do begin
    item:=all.item(i,varempty);        //EmpryParam亦可
//这里做判断是否为有效连接
    memo1.lines.add(item.href);
   end;
 
我有点明白楼主的意思了。好像他的意思是判断某个连接的文本或者连接路径是否符合某个条件,然后Navigate到那个链接,然后再获得网页内的全部可用连接,然后再判断,根据需要继续进行Navigate。

楼主,你是这个意思么?
 
递归? 类似flashget的站点资源探测器?
 
这样解释一下:

比如说网页里提供word文档的下载, 是一个链接, 而这个链接通常需要你下一定的查询条件才能查询到。

得到这个链接,然后自动下载word文件。

这就是我想要得链接,但是这个链接需要你解析html才能得到。

不知道解释的清楚不?
 
清楚了。不过这个查询得到的页面也需要通过对IHTMLDocument2进行编程实现的。比如说这个查询是Post方式提交的,你还要在刚才这个判断连接的前面加上这个查询数据提交的功能。如果是Get方式提交的查询很简单,直接在URL上处理就可以了。
POST方式提交数据你搜索一下吧,资料很多,比我给你解答要详细。
 
http://www.euromind.com/iedelphi/uilessparser.htm
 
用flashget的下载全部连接,应该可以找到的!

来晚了,要回答的让h6003113回答了![?][?][?]
 
我说的方法不行吗?对网页代码进行搜索,提取你想要的链接就行了。
不知道可不可以,请大虾给点评一下!!
 
我觉得先把链接提取出来,然后查后缀!不晓得行不行,不好意思没试过!
 
后退
顶部