Contents
预期结果
OK
说明
我们有更多通过网络测试API的机会,因此此代码通过网络获取结果并检查输出。
程式码
JavaScript
const request = require('request'); const cheerio = require('cheerio'); const target_url = "https://www.yahoo.com/"; request( { method: 'GET', uri: target_url, gzip: true}, function(err, res, content) { const $ = cheerio.load(content); console.assert($('title').text().toLowerCase().match("yahoo"), "yahoo is not included in title"); console.log("OK"); } );
PHP
<?php $target_url = "https://www.yahoo.com/"; $context = stream_context_create(array('http' => array( 'method' => "GET", 'header' => implode("\r\n", array('Accept-Encoding: gzip,deflate')) ))); $content = file_get_contents($target_url, false, $context); if (isGzipResponse($http_response_header)) { $content = gzdecode($content); } $matches = []; if( preg_match('!<title>(.*?)</title>!is', $content, $matches) ) { assert(preg_match('!yahoo!is', $matches[1]) ,"yahoo is not included in title"); print("OK\n"); } else{ die("Failed to get content"); } function isGzipResponse($headers) { foreach($headers as $header) { if (stristr($header, 'content-encoding') and stristr($header, 'gzip')) { return true; } } }
Perl
use Carp::Assert; use HTML::TagParser; use LWP::UserAgent; my $ua = new LWP::UserAgent; my $target_url = "https://www.yahoo.com/"; my $resp = $ua->get($target_url); if($resp->is_success) { my $html = HTML::TagParser->new($resp->content); my $title = $html->getElementsByTagName( "title" ); if(ref $title){ assert($title->innerText()=~ m!yahoo!i, "yahoo is not included in title"); print("OK\n"); } else{ die("title tag is missing"); } } else{ die("Failed to crawl ".$target_url."\n".$resp->status_line); }
Python
from pyquery import PyQuery import re target_url = "https://www.yahoo.com/" pq = PyQuery(url=target_url) assert re.search(r"Yahoo", pq('title').text(), re.IGNORECASE), "yahoo is not included in title" print("OK")
Ruby
require 'open-uri' require 'nokogiri' target_url = "https://www.yahoo.com/" doc = Nokogiri.HTML(open(target_url)) doc.search('title').each do |elm| raise "yahoo is not included in title" unless elm.content.match(/yahoo/i) puts("OK") break end