我写了一个代码来卷曲网站内容,比如facebook和google +,
$html = file_get_contents_curl($url);
if ($html) {
//parsing begins here:
$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');
//get and display what you need:
$title = $nodes->item(0)->nodeValue;
$metas = $doc->getElementsByTagName('meta');
for ($i = 0; $i < $metas->length; $i++) {
$meta = $metas->item($i);
if ($meta->getAttribute('name') == 'description')
$description = $meta->getAttribute('content');
}
........
我得到了$title = $nodes->item(0)->nodeValue;
页面的标题,但我需要获取新闻或内容标题的标题(我的网址总是不是新闻网站),我不想限制自己到某个网站,我想得到网站内容标题。
例如 返回关塔那摩必须在奥巴马任期内关闭 - 俄罗斯外交部 http://rt.com/news/guantanamo-closure-russia-dolgov-245/
之后摆脱'Amélie'在中国关系50年后的形象定义时刻:捕捉我们不断变化的世界 http://edition.cnn.com/2013/05/01/world/defining-moments/index.html?hpt=hp_bn3
我知道通常的方式是抓取H1
或H2
代码,但我需要获取一些未实现新闻标题的网站的标题并使用<div>
代码
例如
http://www.mehrnews.com/detail/News/2222373
更新我在google +中测试了这个link以及标题不在<h?>
标签中的另一个网址,google正确返回标题,任何人都知道它是如何工作的?
答案 0 :(得分:4)
请注意,正确可靠的方法是使用<title>
标记。当你问起如何从其他元素中获得标题时,我的回答将会解决这个问题。
我认为没有任何完全可靠的方法可以做到这一点,但你可以让你的脚本很好地猜测标题是什么。
您发布的每个链接所需的标题都有一个共同的模式:
<h1>
标记内。因此,这些示例的可靠脚本会在页面上找到所有<h1>
标记,然后将“标题”视为仅包含文本的第一个(没有嵌套的html元素)。
正如您现在在评论中添加更多链接 - 不要指望一个适用于所有内容的答案。任何人都可以做的最好的事情是检查元素,搜索页面源并尝试找到用于识别标题的模式。对于你帖子中的链接,我演示了这一点。如果你想找到以其他方式显示的标题,你将不得不为每个场景添加检查并希望最好。