PHP CURL 爬取大众点评app中的点评

PHP CURL 爬取大众点评app中的点评

    • 先在大众点评APP找一个想爬取的点评链接
    • 处理链接
    • 配置抓取点评的CURL方法
    • 查看是否爬取到了数据
    • 处理爬取回来的数据

先在大众点评APP找一个想爬取的点评链接

点评链接: 四颗星,Las Tapas还是很赞的,值得推荐! https://m.dianping.com/ugcdetail/732363063?sceneType=1&bizType=1&utm_source=ugcshare
下面就根据这个链接来举例爬取吧。

处理链接

//将文字部份去掉
preg_match('/http(.*?)ugcshare/i', $url, $um);
$url = $um[0];
//更改sceneType的状态值
$url = str_replace('sceneType=1', 'sceneType=0', $url);

注意:这里讲解一下为什么要替换sceneType的状态值
sceneType=1的时候
抓取的是点评外面的小图(但小图是没有大众点评水印的)
sceneType=0的时候
抓取的是点评的原图(但是加了水印的原图)
不过水印的问题可以解决。

配置抓取点评的CURL方法

其实抓取大众点评并不难。但没有难点的话我也就没必要写了。
抓取大众点评难点有两个
(1)难点一 需要解决验证的问题。
经常抓取点评时,会出现安全验证。当然如果是在本地抓着玩,那没什么问题,直接使用本地浏览器去解除安全验证就可以了。
但是如果你需要上传到线上服务器上。那你必须的使用IP代理了。当然,有钱任性,可以去花钱搞个IP代理。如果不想花钱那就按照我以下的方式,代理线上的IP把。当线上抓取失败的时候,就代理线上IP在本地访问一下大众点评网页然后手动解除验证就可以了。
我呢好学如果要是有其它方法可以跳过这个验证,并且不需要花钱。可以教教我。
(2)难点二 就是匹配数据了
其实也不叫难点,既然你要爬取点评,那理所当然你就得去匹配数据呀。当然关于抓取的点评图片是有水印的。只要认真发现。你可以解决的。

在Linux里安装Tinyproxy用于代理服务器
安装命令:yum install tinyproxy

然后配置tinyproxy:
需要注意,这里需要以管理员的身份打开
首先需要先找到tinyproxy.conf配置文件目录,这里我是以我的安装目录打开的
sudo vim /etc/tinyproxy/tinyproxy.conf
PHP CURL 爬取大众点评app中的点评_第1张图片
Allow:
输入允许代理的IP
百度ip然后就能得到自己的IP。就是指线上允许这个IP代理自己。
设置好后保存退出。在重启tinyproxy
sudo service tinyproxy restart
在这里插入图片描述

$header = array(
            "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15",
            "Connection: keep-alive",
            "Cache-Control: max-age=0",
            "Sec-Fetch-Mode: navigate",
            "Sec-Fetch-Site: cross-site",
            "Host: m.dianping.com",
            "Accept-Language: zh-CN,zh;q=0.9",
            "Sec-Fetch-Mode: navigate",
            "Sec-Fetch-Site: none",
            "Upgrade-Insecure-Requests: 1",
        );
        $ch = curl_init();
        //这里是代理线上的服务器IP以及端口。如果是在本地可以直接注释掉
        curl_setopt($ch, CURLOPT_PROXY, '129.133.22.111');
        curl_setopt($ch, CURLOPT_PROXYPORT, '8888');
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_REFERER, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_TIMEOUT, 60);
        $result = curl_exec($ch);
        curl_close($ch);

查看是否爬取到了数据

PHP CURL 爬取大众点评app中的点评_第2张图片

处理爬取回来的数据

处理数据这模块就自己来把
我这里展示一下结果就可以了
PHP CURL 爬取大众点评app中的点评_第3张图片
注意:
文中的小红框是大众点评app给文字加密的文字。我尝试着去解决过,虽然解决了,但最后发现。加密的woff文件里面的字相对应的编码每天都在变。最后考虑到成本就没必要去解决了。只能麻烦抓取他的人自己动手改了。

我觉得还是把抓取点评内容的图片处理方式分享出来把。毕竟在图片这里我确实是踩了几个坑了。

//内容图片
        preg_match('/\
(.*?)\
/is', $result, $img_arr); if ($img_arr[0]) { preg_match_all('/src=\"(.*?)\"/i', $img_arr[1], $src_arr); foreach ($src_arr[1] as $key => $value) { preg_match('/http(.*?)LPWwuxXKbtEwWMeZjN/i', $value, $arr); if (!$arr) { preg_match('/http(.*?)dZTESHGw7y5Zx2ro/i', $value, $arr); } if ($arr[0]) { $src_arr[1][$key] = $arr[0] . '.jpg'; } else { preg_match('/http(.*?)\.jpg/i', $value, $arr); if ($arr[0]) { $src_arr[1][$key] = $arr[0]; } } } } else { preg_match_all('/\
\\<\/div\>/i', $result, $img_arr); } print_r($src_arr[1]);die;

PHP CURL 爬取大众点评app中的点评_第4张图片

提示:如果有问题,或者处理不来的,我这里有源码,留言找我。

你可能感兴趣的:(PHP CURL 爬取大众点评app中的点评)