如何使用.NET遍历网站的目录结构?

时间:2009-05-09 05:28:22

标签: .net

简单的问题。

如何使用.NET遍历网站的目录结构?

我想要做的是访问特定目录,然后扫描查找.html文件的文件,然后下载它们。

我知道使用WebClient.DownloadString()来复制文件,但是如何通过目录进行搜索?

2 个答案:

答案 0 :(得分:1)

Http没有目录列表/遍历作为规范的一部分。你可以做的最好的事情是希望目录的默认页面是一个列表,然后你必须解析它寻找同一目录中文件的链接。列表的格式没有标准,但是不应该太难以提取所有<a>标签的href属性,然后检查它们是否符合以下条件:

  • 没有斜线,例如“file.html”
  • 同一目录的完整路径,例如“/the/directory/file.html”,只要您查看“/ the / directory”
  • 同一服务器上同一目录的完整路径,例如“http://the.server/the/directory/file.html

如果网络服务器没有为您提供目录列表,您可以随时使用完整的网络蜘蛛方法(只需解析页面中的所有链接并访问同一服务器上的所有链接并解析它们等,然后建立自己的树结构),但很多网站都不适合这样做。

答案 1 :(得分:1)

您应该解析下载的文件并搜索<a>标记以提取链接。递归重复该过程,直到您下载了所有需要的页面。

尝试名为Html Agility Pack的特殊库。这个.Net库有一个杀戮功能,它

  

是一个敏捷的HTML解析器,可以构建一个   读/写DOM并支持plain   XPATH或XSLT。

之后,使用XPATH很容易处理文档,并且很容易提取任何信息。