2015-11-09 81 views
-1
public partial class Form1 : Form 
{ 
    string downloaddifrectory; 
    string mainurl = "http://www.usgodae.org/ftp/outgoing/fnmoc/models/navgem_0.5/latest_data/"; 
    List<string> parsedlinks = new List<string>(); 
    string path_exe = Path.GetDirectoryName(Application.LocalUserAppDataPath); 

    public Form1() 
    { 
     InitializeComponent(); 

     Parseanddownloadfiles(); 
    } 

    private void Parseanddownloadfiles() 
    { 
     using (WebClient client = new WebClient()) 
     { 
      client.DownloadFile(mainurl, path_exe + "\\page.html"); 
     } 

     string firsttag = "href"; 
     string lasttag = ">"; 
     int index = 0; 
     string[] lines = File.ReadAllLines(path_exe + "\\page.html"); 
     for (int i = 0; i < lines.Length; i++) 
     { 
      if (lines[i].Contains("href")) 
      { 
       int first = lines[i].IndexOf(firsttag, index); 
       string result = lines[i].Substring(first + 2,); 
      } 
     } 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 
} 

我想在這種情況下使用indeox和substring。 這是鏈接的HTML網頁的源代碼視圖:我如何解析HTML源代碼中的鏈接?

Source View

並且例如在源視圖在源視圖的線中的一個是:

<img src="/icons/unknown.gif" alt="[ ]"> <a href="US058GCOM-GR1mdl.0018_0056_00000F0RL2015110900_0001_000000-000000grnd_sea_temp">US058GCOM-GR1mdl.0018_0056_00000F0RL2015110900_0001_000000-000000grnd_sea_temp</a>  09-Nov-2015 04:23 444K 

如果我使右鍵單擊部分:

US058GCOM-GR1mdl.0018_0056_00000F0RL2015110900_0001_000000-000000grnd_sea_temp

我可以複製鏈接地址我得到:

http://www.usgodae.org/ftp/outgoing/fnmoc/models/navgem_0.5/latest_data/US058GCOM-GR1mdl.0018_0056_00000F0RL2015110900_0001_000000-000000grnd_sea_temp

如果我現在這個FTP鏈接粘貼到我的瀏覽器會下載該文件。

我需要做什麼我的主要目標是下載所有這些文件在每一行都有這種鏈接。

回答

2

要解析html頁面,請使用像HtmlAgilityPack這樣的html解析器。

這裏是工作的代碼

var web = new HtmlAgilityPack.HtmlWeb(); 
var doc = web.Load("http://www.usgodae.org/ftp/outgoing/fnmoc/models/navgem_0.5/latest_data/"); 

var links = doc.DocumentNode.SelectNodes("//a[@href]") 
      .Select(x => x.Attributes["href"].Value) 
      .ToList(); 

現在你可以使用HttpClient的,HttpWebRequest的或者Web客戶端下載文件。