【发布时间】:2012-06-15 03:30:19
【问题描述】:
我编写了简单的 3 个函数来抓取简单 html 页面的标题、描述和关键字 这是第一个抓取标题的函数
function getPageTitle ($url)
{
$content = $url;
if (eregi("<title>(.*)</title>", $content, $array)) {
$title = $array[1];
return $title;
}
}
而且效果很好 这些是 2 个用于抓取描述和关键字的功能以及那些不起作用的功能
function getPageKeywords($url)
{
$content = $url;
if ( preg_match('/<meta[\s]+[^>]*?name[\s]?=[\s\"\']+keywords[\s\"\']+content[\s]?=[\s\"\']+(.*?)[\"\']+.*?>/i', $content, $array)) {
$keywords = $array[1];
return $keywords;
}
}
function getPageDesc($url)
{
$content = $url;
if ( preg_match('/<meta[\s]+[^>]*?name[\s]?=[\s\"\']+description[\s\"\']+content[\s]?=[\s\"\']+(.*?)[\"\']+.*?>/i', $content, $array)) {
$desc = $array[1];
return $desc;
}
}
我知道 preg_match 行可能有问题,但我真的不知道 我试过很多东西,但它不起作用
【问题讨论】:
-
请注意:
eregi已弃用。 php.net/manual/en/function.eregi.php -
使用正则表达式解析 HTML 会遇到比简单标签对更复杂的事情;当您尝试开始解析标签属性时,您需要切换到 PHP Dom:php.net/manual/en/book.dom.php 问题是名称、描述和内容属性必须按照您匹配的顺序。
-
第三个重点,仅仅因为它在网页上并不意味着您有权以任何您喜欢的方式使用数据(未经许可。
-
你试过Simple HTML DOM parser吗?这就像 jQuery DOM 解析。
-
Tony the Pony 来接你了……他饿了。
标签: php regex web-scraping