是的,我會同意,在乍看之下,這看起來很像以下的副本:如何始終獲得網站標題,而無需下載所有網頁源
真相被告知......這個問題與這兩個極其相關。不過,我注意到,在研究這個特定主題時,我發現的所有鏈接中的代碼都存在缺陷。
下面是類似於在內容上面的鏈接其他一些鏈接:
如果它是已知的,我得到的網址頁面使用這個特殊的方法,正如這個鏈接中所概述的,但我推測它並不重要:
從第一個鏈接的代碼工作得很好,儘管有一個大問題:
如果,例如,我把URL從這個網站:http://www.dotnetperls.com/imagelist
,並通過它代碼,我有一個修改後的版本:
private static string GetWebPageTitle(string url)
{
HttpWebRequest request = (HttpWebRequest.Create(url) as HttpWebRequest);
HttpWebResponse response = (request.GetResponse() as HttpWebResponse);
using (Stream stream = response.GetResponseStream())
{
// compiled regex to check for <title></title> block
Regex titleCheck = new Regex(@"<title>\s*(.+?)\s*</title>", RegexOptions.Compiled | RegexOptions.IgnoreCase);
int bytesToRead = 8092;
byte[] buffer = new byte[bytesToRead];
string contents = "";
int length = 0;
while ((length = stream.Read(buffer, 0, bytesToRead)) > 0)
{
// convert the byte-array to a string and add it to the rest of the
// contents that have been downloaded so far
contents += Encoding.UTF8.GetString(buffer, 0, length);
Match m = titleCheck.Match(contents);
if (m.Success)
{
// we found a <title></title> match =]
return m.Groups[1].Value.ToString();
break;
}
else if (contents.Contains("</head>"))
{
// reached end of head-block; no title found =[
return null;
break;
}
}
return null;
}
}
它返回一個空白的結果,或null。但是,當觀察頁面的HTML代碼時,標題標籤肯定是存在的。
因此,我的問題是:如何修改或修改代碼,無論是修改後的代碼還是其他四個鏈接,都可以從所有網頁獲取網頁標題標題標籤出現,一個例子是這個問題中的最後一個鏈接,一個來自DotNetPerls。
我只是猜測,但我不知道網站是否顯示與其他典型網站不同,例如,也許它第一次加載它時不顯示任何代碼,但瀏覽器實際上加載後重新加載站點第一次透明...
如果可能的話,我寧願與一些工作示例代碼的答案。
我寧願你調試這個多一點。你在緩衝區中收到了什麼? –
@PhilipStuyck你是指哪個緩衝區?我很抱歉,我是「HttpWebRequest」和類似的全球新手。< – Kaitlyn
@PhilipStuyck雖然Rob已經提供了一個工作答案,但我認爲我仍然需要正確回答你。我檢查了,緩衝區是以字節爲單位的,因爲它是一個字節數組。我不知道如何正確轉換該字節數組進行檢查,而不會搞亂文本編碼和格式潛在的... – Kaitlyn