PHP xpath抓取数据

 

public function test()
    {
        # file_get_contents 没效果  要用curl-http请求
        # $html = file_get_contents('https://news.ke.com/bj/baike/0033/');
        $html = $this->http_request('https://news.ke.com/bj/baike/0033/');
        $dom = new \DOMDocument();
        // 忽略html不严格的格式 - 过滤报错信息
        libxml_use_internal_errors(true);
        $dom->loadHTML($html);
        //halt($dom);
        // 转为xpath对象
        $xpath = new \DOMXPath($dom);
        // 查询路径   #谷歌浏览器右击标签  copy->复制xpath
        //$query = '/html/head/title';
        # 它会取得所有a标签class为tit LOGCLICK的元素
        # $query = '/html/body/div[3]/div[2]/div/div[2]/div[2]//div/a[contains(@class,"tit LOGCLICK")]';
        # 或者这样写也可以 同上
         $query = '//a[contains(@class,"tit LOGCLICK")]';
        // 查询所有的图片 - //img 不管层级查找img   @data-original查找所有为data-original属性的图片
        // $query = '//img/@data-original';
        $noteList = $xpath->query($query);
        // 不遍历得到的是一个长度 length
        foreach ($noteList as $item){
            dump($item); // 这里得到一个对象
        }
    }

# curl - http请求 

function http_request($url,$data = null){
        // php curl 发起get或者post请求
        // curl 初始化
        $curl = curl_init();    // curl 设置
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  // 校验证书节点
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);// 校验证书主机
        // 判断 $data get  or post
        if ( !empty($data) ) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  // 以文件流的形式 把参数返回进来
        // 如果这一行 不写你就收不到 返回值
        // 执行
        $res = curl_exec($curl);
        curl_close($curl);
        return $res;
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值