我已经使用过如何使用cURL和PHP成功抓取网页的主题。我已经设法使该部分正常工作,我需要做的是从页面处理一些没有可识别的类/标记的信息,我可以轻松使用。我的示例代码是:
<h3>Building details:</h3>
<p>Disabled ramp access<br />
Male, female and disabled toilets available</p>
<br/>
<p><strong>Appointment lead times:</strong></p>
<p><strong>Type 1</strong>: 8 weeks<br />
<strong>Type 2</strong>: 5 weeks<br />
<strong>Type 3</strong>: 3 weeks<br />
<strong>Type 4</strong>: 3 weeks
</p>
我需要做的是获取不同类型预约的周数提前期,主要是类型1.有时预约提前期不可用并说明:
<p><strong>Appointment lead times:</strong></p>
<p><strong>Type 1</strong>: No information available<br />
我已经研究了几种方法,RegEx,简单DOM解析器等,但还没有真正解决我想要实现的目标。
非常感谢。
答案 0 :(得分:1)
在做这种事情时,它会变得混乱。你必须在代码中找到一些点,以可靠的方式将它分开。你的样本有一个我能看到的地方:Type 1</strong>:
。所以,我会这样做:
$parts = explode('Type 1</strong>: ', $text);
现在,$ parts [1]的第一位将包含您的时间范围或无信息消息。让我们用最后的<br />
来切断它:
if (count($parts) == 2) {
$parts = explode('<br />', $parts[1]);
$parts = trim(str_replace(' weeks', '', $parts[0]));
}
现在,$ parts包含我们的消息,或者我们的时间范围是数字。 is_numeric
将显示方式!这是一种肮脏的方法,但通常是抓取页面数据。在假设你对下一步做好之前,一定要检查每个步骤的结果。
答案 1 :(得分:1)
使用http://php.net/manual/en/book.tidy.php转换为有效的xml,然后您可以通过simplexml http://www.w3schools.com/php/php_xml_dom.asp
轻松查询xpath