2009-03-01 14 views
3

Je pense que c'est possible avec jQuery, mais n'importe quel code serveur ASP.NET est bon pour ma situation aussi. Avec jQuery je peux charger une page par exemple un div, et filtrer la div pour <title> tag, mais je pense que pour les pages lourdes, il n'est pas bon de lire tout d'abord tout le contenu et ensuite lire la balise de titre. ou peut-être qu'il a une solution très simple? de toute façon je ne pouvais rien trouver à ce sujet sur Internet. merciComment lire le titre d'une page externe?

+0

Exterieur de la page en cours ou extérieur au site? – AnthonyWJones

+0

externe au site, d'un autre domaine – mohamadreza

Répondre

2

merci Correcte à cjjer et Boo, je viens de lire plus sur regex et enfin le code ci-dessous travaille pour moi.

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 

mais de toute façon, le problème reste, ce code est le téléchargement de la page entière et en cherchant à travers elle, dont un des sites lourds il a fallu plus de 2 ou 3 secconds pour terminer, mais semble que ce soit la seule façon dans la mesure comme je le sais: | Y a-t-il des suggestions pour affiner ce code?

0

Vous risquez de compromettre la sécurité d'une autre page Web dans le vôtre, juste pour lire le titre ... Vous devriez le faire avec les scripts côté serveur (asp.net, php, ...) et juste afficher le titre sur votre page Web. Chose d'une sorte de mise en cache, car il est facile d'aller chercher des titres à chaque demande.

+0

oui, c'est ce que je pensais, mais je pourrais trouver une solution, pour lire un titre de site Web qui est donné par un utilisateur comme un lien .. – mohamadreza

0

Il n'existe pas de méthode simple pour récupérer le titre d'une page externe. Vous pouvez le faire côté serveur en utilisant un WebClient et en analysant la réponse.

Cependant, il peut être utile de revoir l'exigence, est-ce vraiment nécessaire, combien de trafic supplémentaire et de latence va-t-il générer. Considérez aussi que vous pourriez générer une charge sur le site externe qui ne sait pas que tout ce que vous voulez est un titre, la création de la page peut être assez coûteuse.

+0

yep, à droite, Je vais faire, après que les utilisateurs soumettent leur site Web ou des liens fav à l'application, l'application peut lire le titre et enregistrer le lien avec le titre de la base de données, plutôt que de forcer l'utilisateur à écrire un champ "titre" pour leur site .. – mohamadreza

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

try.je ne suis pas sûr.

+0

erreur synthax pour moi sur [0] – mohamadreza

1

Les titres apparaissent généralement dans les 100 premiers octets, vous pouvez donc essayer une requête de plage pour le premier 1KiB, essayez d'analyser (avec un analyseur d'erreur, car certaines balises de fermeture seront manquantes) et si échoue à revenir au chargement de la page entière.

0

Je ne suis pas sûr que tous les serveurs le supportent.
Voir, si cela aide

 

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: Essayez de vérifier avec certains outils de surveillance du réseau pour savoir quel est le texte que les serveurs envoient. J'ai utilisé le violoniste pour voir la sortie & l'a écrit à la console.

EDIT2: Je suppose que le titre est au début de la page.

+0

merci, cela a fonctionné mais il n'est pas fiable, il ne retourne pas toujours le contenu de l'URL que vous avez entré .. redirections, page comprend et ajax actions, le faire brisé .. – mohamadreza

2

cjjer presque réussi.

D'abord, changer le regex: <title>(?<Content>.*?)?</title>

Deuxièmement, vous devez créer un objet premier match (juste au cas où votre URI n'a pas de titre).

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 pas trop sur regex, il déclenche cette erreur: parsing "(?. *?)?" - Construction de regroupement non reconnue – 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 Décodez cela. Duno pourquoi ils ne le font pas pour vous. – <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=1644592048548"></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"> Dernière question </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://fr.uwenku.com/question/p-czybsgsg-bz.html" target="_blank" title="Comptage du nombre de caractères X"> Comptage du nombre de caractères X </a> </li> <li class="side_article_list_item"> 2. <a href="http://fr.uwenku.com/question/p-kqbbrfrp-bz.html" target="_blank" title="Accès Audit Inspection + Bloc historique!"> Accès Audit Inspection + Bloc historique! </a> </li> <li class="side_article_list_item"> 3. <a href="http://fr.uwenku.com/question/p-pagpxpjd-ca.html" target="_blank" title="Comment puis-je supprimer les classes css d'un composant richfaces?"> Comment puis-je supprimer les classes css d'un composant richfaces? </a> </li> <li class="side_article_list_item"> 4. <a href="http://fr.uwenku.com/question/p-xelffvmj-ca.html" target="_blank" title="Freeze Navbar en haut de la page"> Freeze Navbar en haut de la page </a> </li> <li class="side_article_list_item"> 5. <a href="http://fr.uwenku.com/question/p-hzpwxajq-cb.html" target="_blank" title="Problème avec la route reposant dans Rails 3"> Problème avec la route reposant dans Rails 3 </a> </li> <li class="side_article_list_item"> 6. <a href="http://fr.uwenku.com/question/p-ddulcfqb-cc.html" target="_blank" title="Comment se familiariser avec les normes de communication Web (xauth rest soap oauth json)?"> Comment se familiariser avec les normes de communication Web (xauth rest soap oauth json)? </a> </li> <li class="side_article_list_item"> 7. <a href="http://fr.uwenku.com/question/p-rpuikfum-cq.html" target="_blank" title="Comment puis-je configurer les index pour utiliser db4o avec Spring?"> Comment puis-je configurer les index pour utiliser db4o avec Spring? </a> </li> <li class="side_article_list_item"> 8. <a href="http://fr.uwenku.com/question/p-tghjrpon-cq.html" target="_blank" title="C Double Gratuit Problème"> C Double Gratuit Problème </a> </li> <li class="side_article_list_item"> 9. <a href="http://fr.uwenku.com/question/p-zutwmxbq-cp.html" target="_blank" title="Nouvelle approche MVC et javascript; Q: Puis-je avoir des problèmes à l'avenir avec cette approche?"> Nouvelle approche MVC et javascript; Q: Puis-je avoir des problèmes à l'avenir avec cette approche? </a> </li> <li class="side_article_list_item"> 10. <a href="http://fr.uwenku.com/question/p-oyvglffm-cp.html" target="_blank" title="Comment obtenir la liste de tous les processus de démarrage à partir du Registre en utilisant C# sur Windows 7 64 bits?"> Comment obtenir la liste de tous les processus de démarrage à partir du Registre en utilisant C# sur Windows 7 64 bits? </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> Questions connexes</h3> </div> <div class="article-relative-content"> <ul class="side_article_list"> <li class="side_article_list_item">Aucun problème connexe^_^</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://fr.uwenku.com/contact">Nous contacter</a></li> <li>© 2020 FR.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>