使用PHP和cURL从网站中提取<span>标签?</span>

时间:2014-02-10 22:58:32

标签: php curl html

这是我到目前为止的代码,感谢另一篇文章的一些帮助,但是当我尝试更改它的某些内容以尝试使其适用于其他网站时,我收到此错误:

Undefined offset: 0 in H:\xampp\htdocs\dsa\php2.php on line 16 

代码:

<?php
$curl = curl_init('http://www.masterofmalt.com/contact-us/');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

$page = curl_exec($curl);

if(curl_errno($curl)) 
 {
echo 'Scraper error: ' . curl_error($curl);
exit;
}

curl_close($curl);

preg_match('/<span itemprop="name">(.*)<\/span>/iU', $page, $list);
echo $list[0];

 ?>

这是显示开放时间的原始代码

<?php
$curl = curl_init('http://www.tesco.com/store-locator/uk/?bID=2136');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

$page = curl_exec($curl);

if(curl_errno($curl)) 
{
echo 'Scraper error: ' . curl_error($curl);
exit;
}

curl_close($curl);

preg_match('/<div class="fb hours">(.*)<\/div>/iU', $page, $list);
echo $list[0];

?>

这工作正常,但是当我更改网站然后更改preg_match以显示网站上的某些地址时我得到了上面的错误

2 个答案:

答案 0 :(得分:0)

您收到该错误,因为'preg_match'查询中没有匹配项。因此,当您尝试打印'$ list [0]'时,它会告诉您没有键为零的数组项。

我尝试运行您的代码并收到服务器错误。

$page = curl_exec($curl);
echo $page;
exit;

然后看看输出的是什么。它可能需要您的cURL请求中的更多信息。例如,当我访问该网站时,系统会提示我选择我的位置,然后在我看到该页面之前设置一个cookie。所以,也许您需要传递一个cookie,其中包含您的cURL请求,说明您来自美国或无论您身在何处。

答案 1 :(得分:0)

页面http://www.masterofmalt.com/contact-us/不允许您通过cURL获取html。

如果您在var_dump($page)之后curl_exec,则可以获得此行以及更多信息:

在执行当前Web请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息。

快速搜索表示这意味着您无法通过cURL获取页面的HTML。问题似乎在他们一边,而不是你的。