場景:只讀標題和/或HTML文件的META標籤,無需加載完整的HTML文件
我需要解析數以百萬計的HTML文件/頁面(實際上,我可以)&然後只讀只有標題或者它元部分&它轉儲到數據庫
什麼我做的是使用System.Net.WebClient
類的DownloadString(url_path)
下載&然後通過LINQ保存到數據庫附加到SQL
但這DownloadString
功能給了我完整的HTML源代碼,我Ĵ只需要標題部分& META標籤部分。
任何想法,只下載那麼多的內容?
場景:只讀標題和/或HTML文件的META標籤,無需加載完整的HTML文件
我需要解析數以百萬計的HTML文件/頁面(實際上,我可以)&然後只讀只有標題或者它元部分&它轉儲到數據庫
什麼我做的是使用System.Net.WebClient
類的DownloadString(url_path)
下載&然後通過LINQ保存到數據庫附加到SQL
但這DownloadString
功能給了我完整的HTML源代碼,我Ĵ只需要標題部分& META標籤部分。
任何想法,只下載那麼多的內容?
我認爲你可以用這個URL打開一個流,並使用這個流來讀取第一個x字節,我不能告訴確切的數字,但我認爲你可以將它設置爲合理的數字來獲得標題和描述。
HttpWebRequest fileToDownload = (HttpWebRequest)HttpWebRequest.Create("YourURL");
using (WebResponse fileDownloadResponse = fileToDownload.GetResponse())
{
using (Stream fileStream = fileDownloadResponse.GetResponseStream())
{
using (StreamReader fileStreamReader = new StreamReader(fileStream))
{
char[] x = new char[Number];
fileStreamReader.Read(x, 0, Number);
string data = "";
foreach (char item in x)
{
data += item.ToString();
}
}
}
}
您可以用動詞「HEAD」中的HttpWebRequest返回響應頭(不元素,爲了獲得與元數據的完整的元素,你需要下載頁面,並解析出元數據你想要的。
System.Net.WebRequest.Create(uri) { Method = "HEAD" };
我懷疑Web客戶端將首先嚐試下載整個頁面,在這種情況下,你可能需要一個原始客戶端套接字。發送相應的HTTP請求(手動,因爲你正在使用原始套接字),開始讀取響應(不會立即),並在足夠閱讀時終止連接,但其餘部分可能已經發送從服務器到您的PC,無論您是否需要,都可以節省帶寬。
取決於你想要它,許多一半體面的網站有一個自定義的404頁面,這比一個已知的頁面簡單得多。是否有這些信息是另一回事。
你能給我一個關於如何獲得Stream的例子嗎?它會對性能有幫助嗎? – Pratik
我更新了代碼,我想告訴你關於 –