批改状态:合格
老师批语:你才做到这里, 能加快了
正则表达式:获取京东的 列表和详情
<?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;
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号