如果服务器拒绝访问,如何提取 PHP 中的元标记?
How to extract meta tags in PHP if server denies access?
过去有很多关于这个的讨论。但是事情发生了很大的变化。例如在这个问题中
Get title of website via link
其中有许多解决方案在过去有效,但现在当我检查
等网站时不起作用
https://webdesign.tutsplus.com/articles/the-complete-beginners-guide-to-chinese-fonts--cms-23444
我尝试了上述 SO 讨论中提到的所有方法,none 为此 url 工作。但后来我在这个页面上尝试了同样的方法,他们得到了页面的标题。
http://tools.buzzstream.com/meta-tag-extractor
他们是怎么做到的?如果不使用PHP,那么如何在php中完成呢?请提出除上述 SO 讨论中提到的内容以外的答案,并尝试了 tutsplus 网站的所有这些工作 none。 DOMXPATH、file_get_contents()、cURL 或添加浏览器 header 无效。
对我来说很管用 (-;
在这种情况下,有必要设置 USER_AGENT
,因为如果您发送没有 USER_AGENT
的请求,那么响应是 HTTP request failed! HTTP/1.1 403 Forbidden
.
P.S。始终检查错误和响应 (-;
<?php
function get_title($url){
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_USERAGENT, 'Linux / Firefox 29: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0');
$str = curl_exec($c);
if(strlen($str)>0){
$str = trim(preg_replace('/\s+/', ' ', $str)); // supports line breaks inside <title>
preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title); // ignore case
return $title[1];
}
}
//Example:
echo get_title("https://webdesign.tutsplus.com/articles/the-complete-beginners-guide-to-chinese-fonts--cms-23444");
过去有很多关于这个的讨论。但是事情发生了很大的变化。例如在这个问题中
Get title of website via link
其中有许多解决方案在过去有效,但现在当我检查
等网站时不起作用https://webdesign.tutsplus.com/articles/the-complete-beginners-guide-to-chinese-fonts--cms-23444
我尝试了上述 SO 讨论中提到的所有方法,none 为此 url 工作。但后来我在这个页面上尝试了同样的方法,他们得到了页面的标题。
http://tools.buzzstream.com/meta-tag-extractor
他们是怎么做到的?如果不使用PHP,那么如何在php中完成呢?请提出除上述 SO 讨论中提到的内容以外的答案,并尝试了 tutsplus 网站的所有这些工作 none。 DOMXPATH、file_get_contents()、cURL 或添加浏览器 header 无效。
对我来说很管用 (-;
在这种情况下,有必要设置 USER_AGENT
,因为如果您发送没有 USER_AGENT
的请求,那么响应是 HTTP request failed! HTTP/1.1 403 Forbidden
.
P.S。始终检查错误和响应 (-;
<?php
function get_title($url){
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_USERAGENT, 'Linux / Firefox 29: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0');
$str = curl_exec($c);
if(strlen($str)>0){
$str = trim(preg_replace('/\s+/', ' ', $str)); // supports line breaks inside <title>
preg_match("/\<title\>(.*)\<\/title\>/i",$str,$title); // ignore case
return $title[1];
}
}
//Example:
echo get_title("https://webdesign.tutsplus.com/articles/the-complete-beginners-guide-to-chinese-fonts--cms-23444");