1. file 把整个文件读入一个数组中 2. file_get_contents 把整个文件读入一个字符串中 3. curl libcurl库
file() 把整个文件读入一个数组中| 参数 | 描述 |
|---|---|
| path | 必需。规定要读取的文件。 |
| include_path | 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。 |
| context | 可选。规定文件句柄的环境。是一套可以修改流的行为的选项。若使用 null,则忽略。 |
示例:
//抓取的网址 $url = 'http://news.people.com.cn/210801/211150/index.js'; //将读取内容存在数组中 $arr = file($url); print_r($arr);
file_get_contents() 把整个文件读入一个字符串中| 参数 | 描述 |
|---|---|
| path | 必需。规定要读取的文件。 |
| include_path | 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。 |
| context | 可选。规定文件句柄的环境。是一套可以修改流的行为的选项。若使用 null,则忽略。 |
| start | 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。 |
| max_length | 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。 |
示例:
//抓取的网址 $url = 'http://news.people.com.cn/210801/211150/index.js'; //将读取内容存在字符串中 $arr = file_get_contents($url); echo $arr;
curl() libcurl库| 常用函数 | 描述 |
|---|---|
| curl_init() | 初始化 cURL 会话 |
| curl_setopt() | 设置 cURL 传输选项 |
| curl_exec() | 执行 cURL 会话 |
| curl_errno() | 返回最后一次的错误代码 |
| curl_close() | 关闭 cURL 会话 |
需要重点说下:
curl_setopt() 设置 cURL 传输选项
curl 可以post提交
curl 可以获取https
| curl_setopt 参数 | 描述 |
|---|---|
| ch | 由 curl_init() 返回的 cURL 句柄 |
| option | 需要设置的CURLOPT_XXX选项。(curl的关键部分,看下面示例) |
| vlues | 设置值 |
示例:
header("Content-Type: text/html;charset=utf8"); // url可以是文件,可以是pc页面,也可以是接口 // $url = 'https://mat1.gtimg.com/pingjs/ext2020/configF2017/5a9cf828.js'; $url = 'http://news.cctv.com'; // $url = 'https://pacaio.match.qq.com/irs/rcd?cid=146&token=49cbb2154853ef1a74ff4e53723372ce&ext=ent&page=2'; $ch = curl_init(); // 创建一个新cURL资源 curl_setopt($ch, CURLOPT_URL, $url); // 设置URL curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);// 爬取重定向页面 curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer,防止盗链 curl_setopt($ch, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);// Post提交的数据包 curl_setopt($ch, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 要求结果保存到字符串中还是输出到屏幕上 // 禁用SSL证书的验证,就可以解决HTPPS获取不到的问题 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: "头的字符串。 $html = curl_exec($ch); // 运行cURL,请求URL,把结果复制给变量 if(curl_errno($ch)){ echo 'Errno'.curl_error($curl); //捕抓异常 } curl_close($ch); // 关闭cURL连接 print_r($html);