如何根据URL链接获取网页标题

- (void)getUrlTitleWithUrlContent:(NSString *)urlString
{
    NSString* cleanUrlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];
    
   if([cleanUrlString rangeOfString:@"http://" options:NSCaseInsensitiveSearch].location == NSNotFound
      && [cleanUrlString rangeOfString:@"https://" options:NSCaseInsensitiveSearch].location == NSNotFound)
   {
       cleanUrlString = [@"http://" stringByAppendingString:cleanUrlString];
   }
    
    __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:cleanUrlString]];
    request.defaultResponseEncoding = NSUTF8StringEncoding;//设置默认的编码方式,utf-8
    request.timeOutSeconds = 5;
    [request setCompletionBlock:^{
        NSString* title = @"";
        if(request.responseString != nil)
        {
            NSRange startRange = [request.responseString rangeOfString:@"<title>" options:NSCaseInsensitiveSearch];
            NSRange endRange = [request.responseString rangeOfString:@"</title>" options:NSCaseInsensitiveSearch];//NSCaseInsensitiveSearch:不区分大小写比较
            
            if (startRange.location != NSNotFound
                && endRange.location != NSNotFound
                && endRange.location >= startRange.location + startRange.length)
            {
                NSRange subRange = NSMakeRange(startRange.location + startRange.length, endRange.location - (startRange.location + startRange.length));
                title  = [request.responseString substringWithRange:subRange];
                title = [title stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]];//去掉换行
            }
        }
    }];
    [request setFailedBlock:^{
        DLog(@"failed ~~~ request.respond = %@",request.responseString);
    }];
    [request startAsynchronous];
}
可以根据request.responseHeaders中"Content-Type"(或responseString的meta)中看到编码方式,但是由于ASI已经自动帮助我们进行转码了。所以我们不需要自己去针对不同的编码方式进行编码。只需要将responseString中将title截取出来即可。值得注意的是,要提前设置asi request的默认编码格式(UTF-8),否则有可能会出现乱码。
</pre><pre name="code" class="plain">



                
### 回答1: 可以使用 JavaScript 的 XMLHttpRequest 对象或 fetch API 来获取网页的 HTML 代码,然后使用正则表达式或 DOM 操作来提取网页的 title。 例如,使用 fetch API 获取 HTML 代码并提取 title 的示例代码如下: ```js fetch('https://www.example.com') .then(response => response.text()) .then(html => { const title = html.match(/<title>([\s\S]+)<\/title>/)[1]; console.log(title); }); ``` 另外也可以使用第三方库来提取网页 title,例如 cheerio ```js const cheerio = require("cheerio") const axios = require("axios") axios.get("https://www.example.com") .then((response) => { const $ = cheerio.load(response.data) console.log($("title").text()) }) .catch((err) => { console.log(err) }) ``` ### 回答2: 在JavaScript中,可以使用以下步骤来通过网址链接获取网页的title: 1. 创建一个XMLHttpRequest对象,也可以使用fetch API来发送HTTP请求。 2. 使用HTTP GET方法向目标网址发送请求。例如,可以使用`open()`和`send()`方法来发送请求。 3. 在请求的`onload`事件中,可以通过`responseText`属性获取网页的内容。将这些内容保存在一个变量中。 4. 使用正则表达式或其他字符串处理方法,提取出网页的`<title>`标签的内容。 5. 最后,将获取到的标题显示在页面中或进行其他操作。 以下是一个简单的例子来演示以上步骤: ```javascript // 创建一个XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 定义请求的网址链接 var url = "https://www.example.com"; // 发送GET请求 xhr.open("GET", url, true); xhr.send(); // 在请求加载完成时,获取网页内容并提取title xhr.onload = function() { if (xhr.status === 200) { var responseText = xhr.responseText; // 使用正则表达式提取title内容 var titleRegex = /<title>(.*?)<\/title>/; var match = responseText.match(titleRegex); // 判断是否匹配到title if (match && match.length > 1) { var title = match[1]; // 将title显示在页面中或进行其他操作 console.log("网页标题: " + title); } else { console.log("无法提取网页标题。"); } } else { console.log("请求失败。"); } }; ``` 上述代码使用XMLHttpRequest对象发送GET请求,并在`onload`事件中提取网页标题。首先使用正则表达式匹配`<title>`标签,并获取其中的内容。然后,将标题显示在控制台中。 请注意,由于涉及到异步请求和跨域问题,可能需要在某些情况下进行额外的处理。 ### 回答3: 在JavaScript中,我们可以通过网址链接获取网页的title。首先,我们需要创建一个XMLHttpRequest对象,也就是XHR对象,该对象用于与服务器进行交互。 然后,我们可以使用XHR对象的open方法来打开一个与服务器的连接。在这,我们需要指定请求的方法(GET或POST)以及网址链接。例如,我们可以使用GET方法请求网页的title,如下所示: ``` var xhr = new XMLHttpRequest(); xhr.open("GET", "网址链接", true); ``` 接下来,我们需要使用XHR对象的send方法来发送请求。这将触发与服务器的交互,并获取网页的内容。例如: ``` xhr.send(); ``` 当我们接收到服务器的响应后,我们可以使用XHR对象的readyState属性来检查服务器的状态。当readyState的值为4时,表示服务器的响应已经完全接收。 我们可以使用XHR对象的responseText属性来获取服务器返回的内容,即网页的HTML代码。然后,我们可以通过解析HTML代码来提取网页的title标签中的内容。 例如,我们可以使用正则表达式来提取title标签中的内容,并将其保存在一个变量中: ``` var titleRegex = /<title>(.*?)<\/title>/; var title = titleRegex.exec(xhr.responseText)[1]; ``` 最后,我们可以在控制台中打印出网页的title,如下所示: ``` console.log(title); ``` 这样,我们就可以通过JavaScript代码来获取网页的title了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值