web-dev-qa-db-fra.com

Comment puis-je obtenir le titre d'une page Web étant donné l'URL (une URL externe) à l'aide de jQuery / JS

Je suis un débutant, alors excusez-moi s'il s'agit d'une question idiote ..

Donc, ce que j'essayais est d'obtenir le titre d'une URL à l'aide de JQuery/JS. Je ne veux pas charger le contenu de l'URL puis analyser les étiquettes.

Laissez-moi être plus clair, j'ai un ensemble d'URL, disons 20 pour lesquels je veux afficher les titres .. Les URL que je fais référence ne sont pas les URL actuelles, donc je ne peux pas utiliser JS Document.title ..

je veux donc faire quelque chose de la forme quelqueefunc.title (URL) et obtenir son titre. Y a-t-il une telle fonction?

19
user1014390

Vous pouvez également obtenir le titre de n'importe quelle page Web à l'aide de cette API

http://textance.herokuapp.com/title/

$.ajax({
      url: "http://textance.herokuapp.com/title/www.bbc.co.uk",
      complete: function(data) {
        alert(data.responseText);
      }
});
11
Durgesh

Quelque chose comme ça devrait fonctionner:

$.ajax({
  url: externalUrl,
  async: true,
  success: function(data) {
    var matches = data.match(/<title>(.*?)<\/title>/);
    alert(matches[0]);
  }   
});

ThesuperTramp est correct, ci-dessus ne fonctionnera pas si exterurc est en dehors de votre domaine. Créez plutôt ce fichier php get_external_content.php:

<?php
function file_get_contents_curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$url = $_REQUEST["url"];
$html = file_get_contents_curl($url);

preg_match('/<title>(.+)<\/title>/',$html,$matches);
$title = $matches[1];

echo  json_encode(array("url" => $url, "title" => $title));

puis en JavaScript:

function getTitle(externalUrl){
  var proxyurl = "http://localhost/get_external_content.php?url=" + externalUrl;
  $.ajax({
    url: proxyurl,
    async: true,
    success: function(response) {
      alert(response);
    },   
    error: function(e) {
      alert("error! " + e);
    }
  });
}
16
uncreative