jQueryでも可能だと思いますが、ASP.NETサーバサイドのコードも自分の状況に適しています。外部ページのタイトルを読むには?
jQueryを使用すると、たとえばdivにページを読み込み、<title>
タグのdivをフィルタリングできますが、重いページの場合は、最初にすべてのコンテンツを読み込んでタイトルタグを読み取るのは良くありません。 か、それとも非常に簡単な解決策がありますか?とにかく私はインターネットからそれについて何かを見つけることができませんでした。 ありがとう
jQueryでも可能だと思いますが、ASP.NETサーバサイドのコードも自分の状況に適しています。外部ページのタイトルを読むには?
jQueryを使用すると、たとえばdivにページを読み込み、<title>
タグのdivをフィルタリングできますが、重いページの場合は、最初にすべてのコンテンツを読み込んでタイトルタグを読み取るのは良くありません。 か、それとも非常に簡単な解決策がありますか?とにかく私はインターネットからそれについて何かを見つけることができませんでした。 ありがとう
大丈夫おかげで、私は正規表現についての詳細を読んで、最終的に以下のコードは、私のために働いています。
Dim qq As New System.Net.WebClient
Dim theuri As New Uri(TextBox1.Text)
Dim res As String = qq.DownloadString(theuri)
Dim re As Regex = New Regex("<title\b[^>]*>(.*?)</title>", RegexOptions.Singleline)
Dim ma As Match = re.Match(res)
If Not ma Is Nothing And ma.Success Then
Response.Write(ma.Groups(1).Value.ToString())
Else
Response.Write("error")
End If
が、とにかく、問題は残っている、このコードは、ページ全体をダウンロードし、それを介して求めて、完了するまでに2つ以上または3 seccondsを取った一つの重ウェブサイトが、それは限り唯一の方法であるようです私が知っている通り:| このコードを改良するための提案はありますか?
あなたは他のWebページをあなたのものに読み込むだけで、タイトルの読み込みにはセキュリティ上の危険があります...サーバ側のスクリプト(asp.net、php、...)あなたのウェブページにタイトルを出力する。どのような種類のキャッシュでも、すべてのリクエストでタイトルをフェッチすることができるのでシームレスです。
いや、それは私が思っていたことだが、リンクでユーザーから与えられたウェブサイトのタイトルを読むための解決策を見つけることができた。 – mohamadreza
外部ページのタイトルを取得する簡単な方法はありません。サーバー側でWebClient
を使用して応答を解析することができます。
しかし、それは実際に必要であるか、余分なトラフィックとレイテンシが生成されるかという要件を検討する価値があります。また、あなたが望むすべてのものがタイトルであることを知らない外部サイトに負荷を発生させる可能性があり、ページの作成にかなりの費用がかかる可能性があることも考慮してください。
よろしく、 私ユーザーは自分のウェブサイトまたはfavリンクをアプリケーションに送信した後、ユーザーに自分のウェブサイトの「タイトル」フィールドを書き込ませるのではなく、タイトルを読み込んでデータベースへのリンクを保存することができます.. – mohamadreza
string title=Regex.Match(new System.Net.WebClient().DownloadString(url),(@"<title>(.*?)</title>"))[0].Groups[1].ToString();
try.iわからない。
[0] – mohamadreza
タイトルは通常、最初の数百バイト以内に表示されるため、最初の1KiB程度の範囲要求を試してみてください(一部の終了タグが欠落しているため、エラー訂正パーサーで解析してください)ページ全体の読み込みに失敗します。
すべてのサーバーがこれをサポートしているかどうかはわかりません。
は、このことができます場合は、参照してください
char[] data = new char[299];
System.Net.HttpWebRequest wr =(HttpWebRequest)WebRequest.Create("http://www.yahoo.com");
wr.AddRange("bytes", 0, 299);
HttpWebResponse wre = (HttpWebResponse)wr.GetResponse();
StreamReader sr = new StreamReader(wre.GetResponseStream());
sr.Read(data, 0, 299);
Console.WriteLine((data));
sr.Close();
EDIT:サーバが送信したテキストであるかを調べるために、いくつかのネットワーク監視ツールでチェックしてみます。私はアウトドア&がコンソールにそれを書いたのを見るためにフィドラーを使用しました。
EDIT2:タイトルはページの先頭にあるとします。
のためのsynthaxエラーありがとう、それは働いたが、それは信頼できない、それはあなたが入力したURLからの内容を常に返すことはありません..リダイレクト、ページが含まれているとAJAXアクションが壊れて.. – mohamadreza
cjjerほぼ正しくなっています。
まず、に正規表現を変更します。<title>(?<Content>.*?)?</title>
第二に、あなたは(念のため、あなたのURIは、タイトルを持っていない)最初のマッチオブジェクトを作成する必要があります。 cjjerとブーへ
Match tMatch = new RegEx(@"<title>(?<Content>.*?)?</title>").Match(new System.Net.WebClient().DownloadString(url));
if ((null != tMatch) && (tMatch.IsSuccess)) {
// yay.
title = tMatch.Groups("Content").value;
}
多くの正規表現については、このエラーが発生します: "(?。*?)?" - 認識できないグループ化構文 – mohamadreza
Stoopid StackOverflow。
HTMLデコードする。デュノはなぜあなたのためにそれをしないのですか? –
現在のページまたは外部の外部にはありますか? – AnthonyWJones
サイト外、別のドメインから – mohamadreza