正则表达式:获取京东的 列表和详情
<?php $url = 'https://search.jd.com/Search'; $params = [ 'keyword' => '手机', 'enc'=>'utf-8' ]; $content = Curl($url, $params); //获取body里面的内容 $pattem='/<body>(.*?)<\/body>/si'; $preg = preg_match($pattem, $content, $matches); //将图片标识替换为HTML代码 $content=preg_replace('/data-lazy-img/','src',$matches); $content=preg_replace('/source-src/','src',$content); print_r($content); // 输出匹配结果 // 通过curl请求接口 function Curl($url, $params = false, $ispost = 0){ $httpInfo = array(); $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);// 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);// 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 默认值,让 cURL 自己判断使用哪个版本。 (强制使用 HTTP/1.1)。 curl_setopt($ch, CURLOPT_USERAGENT, 'Data'); // 在HTTP请求中包含一个"User-Agent: "头的字符串。 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // 在尝试连接时等待的秒数。设置为0,则无限等待。 curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 设置超时限制防止死循环 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 要求结果保存到字符串中还是输出到屏幕上 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 爬取重定向页面 if ($ispost) { curl_setopt($ch, CURLOPT_POST, true); // 发送一个常规的Post请求 curl_setopt($ch, CURLOPT_POSTFIELDS, $params); // Post提交的数据包 curl_setopt($ch, CURLOPT_URL, $url); // 设置URL } else { // GET请求,组装url if ($params) { $url=$url.'?'; foreach($params as $k=>$v){ $url=$url.$k.'='.$v.'&'; } curl_setopt($ch, CURLOPT_URL, $url); } else { curl_setopt($ch, CURLOPT_URL, $url); } } $response = curl_exec($ch); // 运行cURL,请求URL,把结果复制给变量 if ($response === FALSE) { echo "cURL Error: " . curl_error($ch); //捕抓异常 return false; } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // 获取一个cURL连接资源句柄的信息 $httpInfo = array_merge($httpInfo, curl_getinfo($ch)); curl_close($ch); return $response; }