例如,我有鏈接http://www.mediafire.com/?dr7j413wv5dc3n7t直接獲取下載鏈接和文件的網站從Mediafire.com
什麼是得到DIREKT下載鏈接的最佳方式,這是
http://download656.mediafire.com/8qgjk46xjcag/dr7j413wv5dc3n7/Test.rar
和C#中的文件大小(347.31 KB)?
例如,我有鏈接http://www.mediafire.com/?dr7j413wv5dc3n7t直接獲取下載鏈接和文件的網站從Mediafire.com
什麼是得到DIREKT下載鏈接的最佳方式,這是
http://download656.mediafire.com/8qgjk46xjcag/dr7j413wv5dc3n7/Test.rar
和C#中的文件大小(347.31 KB)?
最好的方法是使用HTML解析器(如HTML Agility Pack)解析HTML,然後查詢它。
它允許您使用XPath查詢HTML,非常類似於XmlDocument
。
您應該聯繫Mediafire,看他們是否提供API。
我猜測他們沒有API(至少不能公開訪問),這將導致你需要擊敗CAPTCHA和其他反機器人技術。
試圖解決直接下載鏈接可能違反他們的服務條款,並可能事實上是非法的,具體取決於您所在的法律。
我創建了一個功能,已經爲我所用,那就是:
public string Mediafire(string download)
{
HttpWebRequest req;
HttpWebResponse res;
string str = "";
req = (HttpWebRequest)WebRequest.Create(download);
res = (HttpWebResponse)req.GetResponse();
str = new StreamReader(res.GetResponseStream()).ReadToEnd();
int indexurl = str.IndexOf("http://download");
int indexend = GetNextIndexOf('"', str, indexurl);
string direct = str.Substring(indexurl, indexend - indexurl);
return direct;
}
然後,GetNextIndexOf功能是不僅僅是這個其他情況下非常有用。這是爲了使Mediafire功能正常工作所必需的:
private int GetNextIndexOf(char c, string source, int start)
{
if(start < 0 || start > source.Length - 1) {
throw new ArgumentOutOfRangeException();
}
for(int i = start; i < source.Length; i++) {
if(source[i] == c) {
return i;
}
}
return -1;
}
大聲笑,我沒有意識到完美的語法是發佈解決方案時如此重要的一個因素。 :P – user3596865 2014-05-04 00:27:35