简单的PHP屏幕抓取功能
我正在试验使用WordPress的自动注册(即RSS驱动的博客张贴),而所缺少的是一个组件,用RSS的URL链接内容自动填充帖子内容(RSS与解决方案无关)。简单的PHP屏幕抓取功能
使用标准的PHP 5,我怎么可以创建一个名为fetchHTML功能([URL])返回那是<body>...</body>
标签之间发现了一个网页的HTML内容?
请让我知道是否有任何先决条件“包括”。 谢谢。
假设它永远是<body>
而不是<BODY>
或<body style="width:100%">
或任何东西,除了<body>
和</body>
,并与你不应该使用正则表达式解析HTML,即使我约而至,这里亚去了警告:
<?php
function fetchHTML($url)
{
$feed = '<body>Lots of stuff in here</body>';
$content = file_get_contents($url);
preg_match('/<body>([\s\S]{1,})<\/body>/m', $content, $match);
$content = $match[1];
return $content;
} // fetchHTML
?>
如果你echo fetchHTML([some url]);
,你会得到body标签之间的html。
请注意原始警告。
我觉得你使用像SimpleDom一类的更好 - >http://sourceforge.net/projects/simplehtmldom/提取数据,你不需要写这样复杂的正则表达式
谢谢。不错的图书馆,使用直观,它包括jquery样选择器。截至2013年年中,它似乎仍然是一个活跃的项目。 – 2013-09-16 01:32:52
好,这是一个DOM解析器的代码示例的要求。
<?php
function fetchHTML($url)
{
$content = file_get_contents($url);
$html=new DomDocument();
$body=$html->getelementsbytagname('body');
foreach($body as $b){ $content=$b->textContent; break; }//hmm, is there a better way to do that?
return $content;
}
从来没有见过DomDocument()!我必须确认一下。它使我想仅仅使用jQuery的解决方案...'().find('body').html();'heh – hookedonwinter 2010-08-04 05:20:12
@hookedonwinter哈...这将工作,我猜!如果你在浏览器中打开它,嗯......这让我想起,实际上有一种叫做phpquery的http://code.google.com/p/phpquery/,它非常酷! – JAL 2010-08-04 14:44:05
JL现在你已经给了我足够的时间来学习下一周。谢谢! – hookedonwinter 2010-08-04 14:54:43
会让网络更加垃圾? – 2010-08-04 04:26:33