这是我到目前为止的代码,感谢另一篇文章的一些帮助,但是当我尝试更改它的某些内容以尝试使其适用于其他网站时,我收到此错误:
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以显示网站上的某些地址时我得到了上面的错误
答案 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。问题似乎在他们一边,而不是你的。