【问题标题】:PHP Crawler missing Hits and empty HitsPHP Crawler 缺少 Hits 和空 Hits
【发布时间】:2014-11-06 23:45:41
【问题描述】:

我正在制作一个 PHP 爬虫来爬取电子邮件地址的 url。但不知何故,它缺少电子邮件地址并返回空数组位置。

代码:

function curl($url){
        $ch = curl_init( );
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $return = curl_exec($ch);
        curl_close ($ch);
        return $return;
    }
    if(isset($_POST['go']))
    {
        if($_POST['url'] != ''){
        $data = curl($_POST['url']);
        preg_match("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})/i", $data, $matches);
        echo "<h1>Handmatig gezocht</h1><hr>";
        $tely = count($matches);
        for ($y=0; $y<=$tely; $y++) 
        {
            if(!empty($matches[$y]))
            {
                echo $matches[$y] ."<br>";
            }
            else
            {
                echo "Lege array :(<br>";
            }   
        }
        echo "<hr>";

        }
    }

我在本地主机上创建了一个包含 5 封电子邮件的简单网页

    <p>jamie@jamie.nl</p>
    <p>test@test.nl</p>
    <p>dasd@dsad.nl</p>
    <p>addasd@dasvfv.nl</p>
    <p>gsdgseg@sdfsdfsd.nl</p>

我从爬虫返回的数组看起来像这样:

Array ( [0] => jamie@jamie.nl [1] => [2] => [3] => .nl )

【问题讨论】:

    标签: php curl web-scraping web-crawler


    【解决方案1】:

    发生这种情况是因为您使用的是 preg_match(请参阅 documentation)。
    你应该改用preg_match_all

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多