2009-03-01 10 views
3

Ich denke, dass es mit jQuery möglich ist, aber jeder ASP.NET-Server-Code ist auch für meine Situation gut.Wie liest man den Titel einer externen Seite?

Mit jQuery kann ich eine Seite zum Beispiel ein div laden und das div für <title> Tag filtern, aber ich denke, für schwere Seiten ist es nicht gut, zuerst den gesamten Inhalt zu lesen und dann das Title-Tag zu lesen. oder vielleicht hat es eine sehr einfache Lösung? Wie auch immer, ich konnte nichts über das Internet herausfinden. Danke

+0

Extern auf der aktuellen Seite oder extern auf der Website? – AnthonyWJones

+0

extern auf der Website, aus einer anderen Domäne – mohamadreza

Antwort

2

in Ordnung dank cjjer und Boo, ich habe gerade gelesen, mehr über regex und schließlich unter der Code für mich arbeiten.

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 

aber sowieso, das Problem bleibt, dieser Code heruntergeladen wird die ganze Seite und suchen durch sie, die eine schwere Websites mehr als 2 oder 3 secconds Anspruch nahm, scheint aber es ist der einzige Weg, wie weit wie ich weiß: | Gibt es Vorschläge, diesen Code zu verfeinern?

0

Es wäre ein Sicherheitsrisiko für Sie, eine andere Webseite in Ihre zu laden, nur für den Titel lesen ... Sie sollten dies mit Server Side Scripting (asp.net, PHP, ...) und einfach tun Gib den Titel auf deiner Webseite aus. Eine Art Caching, weil es nahtlos ist, Titel bei jeder Anfrage zu holen.

+0

Ja, das ist, worüber ich nachgedacht habe, aber ich könnte eine Lösung finden, einen Website-Titel zu lesen, der von einem Benutzer als Link gegeben wird. – mohamadreza

0

Es gibt keine einfache, saubere Methode zum Abrufen des Titels einer externen Seite. Sie könnten es Server Seite mit einem WebClient tun und die Antwort analysieren.

Es lohnt sich jedoch, die Anforderung zu überprüfen, ist es wirklich notwendig, wie viel zusätzlichen Datenverkehr und Latenz wird es generieren. Berücksichtigen Sie auch, dass Sie auf der externen Website eine Last generieren könnten, bei der Sie nicht wissen, dass Sie nur einen Titel haben möchten. Die Erstellung der Seite kann sehr teuer sein.

+0

yep, rechts, was ich Am laufen zu sein ist, nachdem Benutzer ihre Web site oder fav Verbindungen zur Anwendung einreichen, kann die APP den Titel lesen und den Link mit dem Titel zur Datenbank speichern, anstatt den Benutzer zu zwingen, ein "Titel" Feld für ihre Web site zu schreiben .. – mohamadreza

0
string title=Regex.Match(new System.Net.WebClient().DownloadString(url),(@"<title>(.*?)</title>"))[0].Groups[1].ToString(); 

try.ich bin mir nicht sicher.

+0

syntax Fehler für mich auf [0] – mohamadreza

1

Titel erscheinen normalerweise innerhalb der ersten paar hundert Bytes, also könnten Sie eine Bereichsanfrage für den ersten 1KiB oder so versuchen, versuchen Sie das zu parsen (mit einem fehlerkorrigierenden Parser, da einige schließende Tags fehlen) und wenn Fails fallen auf das Laden der ganzen Seite zurück.

0

Ich bin nicht sicher, ob alle Server dies unterstützen.
Siehe wenn diese

 

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 hilft: Versuchen mit einigen Netzwerk-Monitoring-Tool überprüft, um herauszufinden, was der Text ist, die Server senden. Ich habe Fiddler verwendet, um die Ausgabe & schrieb es an die Konsole zu sehen.

EDIT2: Ich gehe davon aus, dass der Titel am Anfang der Seite sein wird.

+0

Danke, es hat funktioniert, aber es ist nicht zuverlässig, es liefert nicht immer Inhalte von der URL, die Sie eingegeben haben .. Weiterleitungen, Seiten enthält und Ajax Aktionen, machen es kaputt .. – mohamadreza

2

cjjer fast hat es richtig gemacht.

Erstens ändern sich die Regex: <title>(?<Content>.*?)?</title>

Zweitens müssen Sie zunächst ein Match-Objekt erstellen (nur für den Fall Ihre URI keinen Titel hat).

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; 
} 
+0

i weiß nicht viel über Regex, es feuert diesen Fehler: Parsing "(?. *?)?" - Unerkanntes Gruppenkonstrukt – mohamadreza

+0

Stoopid StackOverflow. . *?)? – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> <div itemprop="comment" class="post-comment"> <div class="row"> <div class="col-lg-1"><span class="text-secondary">+0</span></div> <div class="col-lg-11"> <p class="commenttext">HTML decode das. Duno, warum machen sie das nicht für dich? – <span class="text-secondary"> <small> <span></span> </small> </span> </p> </div> </div> </div> </div> </div> </article> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1038284119" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> <div class="clearfix"> </div> <div> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-6208739752673518" data-ad-slot="1575177025"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="padding-top-10"></div> </div> </div> <script type="text/javascript" src="http://img.uwenku.com/uwenku/script/side.js?t=1644592048381"></script> <script type="text/javascript" src="http://img.uwenku.com/uwenku/plugin/highlight/highlight.pack.js"></script> <link href="http://img.uwenku.com/uwenku/plugin/highlight/styles/docco.css" media="screen" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $('pre').each(function(i, e) { hljs.highlightBlock(e, "<span class='indent'> </span>", false) }); </script> <div class="col-lg-3 col-md-4 col-sm-5"> <div id="rightTop"> <div class="row"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6208739752673518" data-ad-slot="5415218910" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <div class="row sidebar panel panel-default"> <div class="panel-heading font-bold"> Letzte Frage </div> <div class="m-b-sm m-t-sm clearfix"> <ul class="side_article_list"> <li class="side_article_list_item"> 1. <a href="http://de.uwenku.com/question/p-xzhtyudt-u.html" target="_blank" title="Registrieren ein benutzerdefiniertes HTML-Elements in Typoskript - Ionic 2"> Registrieren ein benutzerdefiniertes HTML-Elements in Typoskript - Ionic 2 </a> </li> <li class="side_article_list_item"> 2. <a href="http://de.uwenku.com/question/p-esrheaij-s.html" target="_blank" title="Ersetzen Regex String in C#"> Ersetzen Regex String in C# </a> </li> <li class="side_article_list_item"> 3. <a href="http://de.uwenku.com/question/p-psvygamg-q.html" target="_blank" title="Bearbeiten von Daten in einer Callback-Funktion"> Bearbeiten von Daten in einer Callback-Funktion </a> </li> <li class="side_article_list_item"> 4. <a href="http://de.uwenku.com/question/p-mzlydrvn-c.html" target="_blank" title="React Native: Szene/Komponente nicht gerendert, wenn von renderScene zurückgegeben"> React Native: Szene/Komponente nicht gerendert, wenn von renderScene zurückgegeben </a> </li> <li class="side_article_list_item"> 5. <a href="http://de.uwenku.com/question/p-fpsneunx-b.html" target="_blank" title="Vertikaler mittlerer Inhalt in div?"> Vertikaler mittlerer Inhalt in div? </a> </li> <li class="side_article_list_item"> 6. <a href="http://de.uwenku.com/question/p-aupxmfbl-g.html" target="_blank" title="zwei Authentifizierungsmechanismen auf einer Spring-Boot-Anwendung (Basic & JWT)"> zwei Authentifizierungsmechanismen auf einer Spring-Boot-Anwendung (Basic & JWT) </a> </li> <li class="side_article_list_item"> 7. <a href="http://de.uwenku.com/question/p-ncmvqepr-eg.html" target="_blank" title="RESTful: Was ist der Unterschied zwischen ClientProperties.CONNECT_TIMEOUT und ClientProperties.READ_TIMEOUT in Jersey?"> RESTful: Was ist der Unterschied zwischen ClientProperties.CONNECT_TIMEOUT und ClientProperties.READ_TIMEOUT in Jersey? </a> </li> <li class="side_article_list_item"> 8. <a href="http://de.uwenku.com/question/p-prbpqopm-dq.html" target="_blank" title="gespeicherte Prozeduren generieren automatisch in Entity Framework Code-first"> gespeicherte Prozeduren generieren automatisch in Entity Framework Code-first </a> </li> <li class="side_article_list_item"> 9. <a href="http://de.uwenku.com/question/p-baopfjos-dt.html" target="_blank" title="Rückgabewert und/oder Ausbruch eines Versprechens in Javascript"> Rückgabewert und/oder Ausbruch eines Versprechens in Javascript </a> </li> <li class="side_article_list_item"> 10. <a href="http://de.uwenku.com/question/p-nhxpzosn-dv.html" target="_blank" title="Eloquent lastInsertId"> Eloquent lastInsertId </a> </li> </ul> </div> </div> </div> <p class="article-nav-bar"></p> <div class="row sidebar article-nav"> <div class="row box_white visible-sm visible-md visible-lg margin-zero"> <div class="top"> <h3 class="title"><i class="glyphicon glyphicon-th-list"></i> Verwandte Themen</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item">Keine verwandten Themen^_^</li> </ul> </div> </div> </div> </div> </div> </div> </div><!-- wrap end--> <!-- footer --> <footer id="footer"> <div class="bg-simple lt"> <div class="container"> <div class="row padder-v m-t"> <div class="col-xs-8"> <ul class="list-inline"> <li><a href="http://de.uwenku.com/contact">Sprechen Sie uns an</a></li> <li>© 2020 DE.UWENKU.COM</li> <li><a target="_blank" href="https://beian.miit.gov.cn/">沪ICP备13005482号-4</a></li> <li><script type="text/javascript" src="https://v1.cnzz.com/z_stat.php?id=1280101193&web_id=1280101193"></script></li> <li><a href="http://www.uwenku.com/" target="_blank" title="优文库">简体中文</a></li> <li><a href="http://hk.uwenku.com/" target="_blank" title="優文庫">繁體中文</a></li> <li><a href="http://ru.uwenku.com/" target="_blank" title="поле вопросов и ответов">Русский</a></li> <li><a href="http://de.uwenku.com/" target="_blank" title="Frage - und - antwort - Park">Deutsch</a></li> <li><a href="http://es.uwenku.com/" target="_blank" title="Preguntas y respuestas">Español</a></li> <li><a href="http://hi.uwenku.com/" target="_blank" title="कार्यक्रम प्रश्न और उत्तर पार्क">हिन्दी</a></li> <li><a href="http://it.uwenku.com/" target="_blank" title="IL Programma di chiedere Park">Italiano</a></li> <li><a href="http://ja.uwenku.com/" target="_blank" title="プログラム問答園区">日本語</a></li> <li><a href="http://ko.uwenku.com/" target="_blank" title="프로그램 문답 단지">한국어</a></li> <li><a href="http://pl.uwenku.com/" target="_blank" title="program o park">Polski</a></li> <li><a href="http://tr.uwenku.com/" target="_blank" title="Program soru ve cevap parkı">Türkçe</a></li> <li><a href="http://vi.uwenku.com/" target="_blank" title="Đáp ứng viên">Tiếng Việt</a></li> <li><a href="http://fr.uwenku.com/" target="_blank" title="Programme interrogation Park">Française</a></li> </ul> </div> </div> </div> </div> </div> </footer> <!-- / footer --> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?f78a970f17b19a79fc477a3378096f29"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>