如何使用JQuery / JS获取URL(外部URL)的网页标题

问题描述 投票:14回答:3

我是新手,如果这是一个愚蠢的问题,请原谅。

所以我尝试的是使用JQuery / JS获取URL的标题。我不想加载网址的内容,然后在其中解析标签。

让我更清楚一点,我有一组网址,比方说20我要显示标题..我所指的网址不是当前的网址,所以我不能使用js document.title ..

所以我想做一些SOMEFUNC.title(URL)的形式并得到它的标题。有这样的功能吗?

javascript jquery get title
3个回答
10
投票

您还可以使用此API获取任何网页的标题

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

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

16
投票

这样的事情应该有效:

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

TheSuperTramp是正确的,如果externalUrl不在您的域中,则上述操作无效。而是创建这个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));

然后在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);
    }
  });
}

1
投票

跨域请求不适用于ajax,但您可以做的是在服务器上编写一个脚本来获取给定站点的标题。

如果您使用的是PHP,则可以使用file_get_contents和preg_match函数来获取标题。这家伙已经为它提供了代码。

http://www.cafewebmaster.com/php-get-page-title-function

然后在jQuery中,您可以将其添加到事件或将其放在函数中。

//For the purpose of this example let's use google
var url = "http://www.google.com";

$.ajax({
  type: "POST",
  url: "./getURLTitle.php",
  data: "{url: \"" + url + "\"}",
  success: function(data) {
     //do stuff here with the result
     alert(data);
  }   
});
© www.soinside.com 2019 - 2024. All rights reserved.