我如何从 html 源中的一行解析 link?
How can i parse a link from a line in a html source?
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)
{
}
}
在这种情况下,我尝试使用索引和子字符串。
这是 html 页面源视图的 link:
例如,在源视图中,源视图中的一行是:
<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
我可以复制我得到的 link 地址:
如果我现在将此 ftp link 粘贴到我的浏览器,它将下载该文件。
我需要做的主要目标是在每一行中下载所有具有这种 links 的文件。
要解析 html 页面,请使用 html 解析器,例如 HtmlAgilityPack。
这是一个工作代码
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 或WebClient 下载文件。
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)
{
}
}
在这种情况下,我尝试使用索引和子字符串。 这是 html 页面源视图的 link:
例如,在源视图中,源视图中的一行是:
<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
我可以复制我得到的 link 地址:
如果我现在将此 ftp link 粘贴到我的浏览器,它将下载该文件。
我需要做的主要目标是在每一行中下载所有具有这种 links 的文件。
要解析 html 页面,请使用 html 解析器,例如 HtmlAgilityPack。
这是一个工作代码
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 或WebClient 下载文件。