【问题标题】:how do I pull a specific div from a ebsite using PHP & cURL?如何使用 PHP 和 cURL 从网站中提取特定的 div?
【发布时间】:2014-03-08 09:15:27
【问题描述】:

这是我目前的代码

<?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);

$regex = '/<div itemtype="case_textlist">(.*?)<\/div>/s'; <-- confused with this
if ( preg_match($regex, $page, $list) )
echo $list[0];
else
print "Not found";
?>

我想从包含我在代码开头的 URL 上的开放时间的 div 中获取信息,但是我不明白我必须在 $regex 部分中输入什么来获取开放时间。

只是另一个简单的问题,我尝试为另一个网站执行此操作,但我收到此错误:注意:未定义的偏移量:第 16 行的 H:\xampp\htdocs\dsa\php2.php 中的 0 有什么想法吗?

<?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 regex curl


    【解决方案1】:

    这就是我要做的。找到围绕小时框的 div 之间的所有内容。使用“U”模式修饰符使其为“Ungreedy”并在找到第一个结束 div 标记后停止。

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

    然后,在“$list”变量中,使用 $1 存储它匹配的所有内容。

    $list[1];
    

    现在您已经获得了整个时间块,使用“preg_match_all”搜索并提取每个时间并将它们放入一个名为“$opening_times”的数组中。

    preg_match_all('/<td colspan="2">(.*)<\/td>/iU', $list[1], $opening_times);
    

    使用 $1 提取 tds 之间的所有内容,我们现在有了一个时间数组。

    $opening_times_array = $opening_times[1];
    

    【讨论】:

    • 好的我得到了这个工作但是我仍然不知道你是如何得到这个位的:'/
      (.*)/iU'
    • 我刚刚查看了您在问题中列出的页面的源代码,并在该代码中找到了包含营业时间的 div。
    • 哦,好吧,(.*) 是指“fb hours”类和下一个要关闭的 div 之间的意思吗?
    • 是的,点 '.'表示任何字符,星号“*”表示零次或多次。 (所以基本上说匹配它找到的任何东西,直到它击中结束的 div 标签。)你需要确保使用 Ungreedy 'U' 模式修饰符,以便它在击中第一个 '
      ' 时停止;否则它将继续进行。
  • 永远不要使用 U 修饰符!这是完全没有必要的,只会混淆视听。每当您需要在令牌上使用非贪婪(惰性)量词时,以附加问号的形式将其直接添加到模式中的量词本身。即/(.*?)/ 等价于/(.*)/U。我很少给答案不赞成,但在这种情况下,当你实际建议使用不好的做法时,这个答案会得到我的 -1。此外,您确实意识到,当您使用 U 修饰符时,它不仅会使贪婪的量词变得懒惰,还会使懒惰的量词变得贪婪。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签