【问题标题】:Simple html dom parser can`t parse all page简单的 html dom 解析器无法解析所有页面
【发布时间】:2012-08-19 18:46:13
【问题描述】:

我需要从that site的中心栏获取信息

(我需要确切的电话号码)

我正在使用 SimpleHTML dom 解析器,并且正在尝试一些 curl 方法,但它总是给我没有那个中心列的 html 源代码!

我了解使用此代码:

 $html = file_get_html('http://vashmagazin.ua/cat/catalog/?rub=100&subrub=1');
 $str = $html->Save();
 echo $str;

我需要说我今天能不能这样做,否则我会失去这个订单。 抱歉我的英语不好,谢谢。

【问题讨论】:

    标签: php simple-html-dom


    【解决方案1】:

    注意字符集转换的请求头和iconv。

    如果不将 windows-1251 中的字符串转换成 utf-8,preg_match 会失败。

    转换后,我使用一个简单的正则表达式从整个页面中提取电话号码。

    <?php
    
        $url = 'http://vashmagazin.ua/cat/catalog/?rub=100&subrub=1';
    
        $ch = curl_init();
        $request_headers = array
            (
                "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
                "Accept-Charset" => "windows-1251,utf-8;q=0.7,*;q=0.3",
            );
    
        $header = array();
        foreach ($request_headers as $key => $value)
            $header[] = "{$key}: {$value}";
    
        curl_setopt($ch, CURLOPT_HTTPGET, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.63 Safari/535.7');
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
        $html = curl_exec($ch);
        curl_close($ch);
    
        $html = iconv("windows-1251", "UTF-8", $html);
    
        $matches = array();
        $pattern = '/\([0-9]{3}\)[0-9]{3,}\-[0-9]+/us';
    
        if (preg_match_all($pattern, $html, $matches))
        {
            var_dump($matches);
        }
    
    ?>
    

    上面的源代码已经过全面测试并且可以正常工作。

    如果您无法安装 curl 库,请尝试将 curl 块替换为 file_get_contents($url)。

    要在您的操作系统上安装 curl 在 google 上搜索,在 Ubuntu 上使用 sudo apt-get install curl libcurl3 php5-curl 并重新启动 apache。

    【讨论】:

    • 致命错误:在第 5 行调用 F:\xampp\htdocs\mag\index.php 中未定义的函数 curl_init() --- 也许我需要一些库来包含? (除了我已经包含的简单 html dom)
    • 你必须安装curl库,在ubuntu你可以用这个命令安装它:sudo apt-get install curl libcurl3 php5-curl(否则你可以尝试直接使用file_get_contents($url)。 .. 代码经过测试,100% 运行
    猜你喜欢
    • 2017-09-09
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多