CURL请求值获取问题

img

img


在我本地环境中curl获取的百度上搜索CSDN,那么我本地curl怎么获取到CSDN这个数据或者请求值

其实直接封装一个方法也可以直接获取的,因为出来的是个字符串

img

img

function getQueryVariable(variable)
{
       var query = window.location.search.substring(1);
       var vars = query.split("&");
       for (var i=0;i<vars.length;i++) {
               var pair = vars[i].split("=");
               if(pair[0] == variable){return pair[1];}
       }
       return(false);
}

调用方法,然后直接传递get的名称,就会返回参数值

代码改成

<?php
$wd = isset($_REQUEST['wd'])?trim($_REQUEST['wd']):'';
//创建一个新的cURL资源
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, "https://www.baidu.com/s?wd=".$wd );
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在  加密算法是否存在
//抓取URL并把它传递给浏览器
$result = curl_exec($ch);

//关闭cURL资源,并且释放系资源
curl_close($ch);
echo $wd.'<br />';
echo($result);

其中$result 就是返回的请求值,打印出来显示如下:

img

这个你单纯用curl 是不能实现的,你curl回来的代码,还要结合上你自己的代码
因为你curl_setopt($ch, CURLOPT_URL, "https://www.baidu.com");后回来的代码,如果你不经过处理,他跳转还是会跑到百度去的,你获取回来以后,百度点查询跳转主要是以下2个:

一个是输入关键词的:
<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">
一个是提交查询按钮:
<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">

你要用

$('#su').on('click',function(){
        var key=$('#kw').val();//这个是获取输入的关键词:
       location.herf='你自己用curl的网址.php?keyword='+key;
        return false;//加上这个是防止表单跳转
});

这样就可以在你自己的服务器上查询一次了

最简单的方法 file_get_contents (把整个文件读入一个字符串中 支持网址 参数) 直接获取连接地址的内容并且转成字符串


```php
$url = "http://www.baidu.com/?id=”.$parameter
$contents = file_get_contents($url); 

```