漫潮者,私有云,NAS,新媒体电商.软件开发,商乾

标题: curl爬虫 [打印本页]

作者: 北极孤星的泪    时间: 2022-9-2 15:37
标题: curl爬虫
函数部分

  1. /**
  2. * 发起网络请求
  3. * @param string $url
  4. * @param $data
  5. * @param array $header
  6. * @return bool|string
  7. */
  8. function http_request(string $url, $data = [], array $header = []) {
  9.     $ret = '';
  10.     // 1、初始化
  11.     $ch = curl_init();
  12.     // 2、相关配置
  13.     # 设置请求的URL地址
  14.     curl_setopt($ch, CURLOPT_URL, $url);
  15.     # 设置一下执行成功后不直接返回到客户端
  16.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  17.     # 设置超时时间  单位是秒
  18.     curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  19.     # 不进行证书的检测
  20.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  21.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  22.     # 伪造一个请求的浏览器型号
  23.     curl_setopt($ch, CURLOPT_USERAGENT, 'msie');

  24.     // 表示有请求体,是POST的提交
  25.     if (!empty($data)) {
  26.         # 指明是一个POST请求
  27.         curl_setopt($ch, CURLOPT_POST, 1);
  28.         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  29.         if (is_string($data)) {
  30.             # 设置头信息,告诉接受者我们发送的数据类型
  31.             curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  32.         }
  33.     }
  34.     // 3、执行
  35.     $ret = curl_exec($ch);
  36.     # 请求的错误码 为0表示请求正确,大于0则表求请求失败的
  37.     if (curl_errno($ch) > 0) {
  38.         echo curl_error($ch);
  39.         exit;
  40.     }
  41.     // 4、关闭请求资源
  42.     curl_close($ch);
  43.     return $ret;
  44. }
复制代码
调用部分
  1. //采集标题推荐使用curl需要手动开启
  2. //__DIR__获取当前目录
  3. include __DIR__.'/function.php';
  4. //$url='https://kandian.ke.com/detail/MjY3MzE1NzI=.html?beikefrom=pc_kd_index';
  5. $url="https://www.aurrel.com/thread-17326-1-1.html";
  6. $html=http_request($url);
复制代码



作者: 北极孤星的泪    时间: 2022-9-6 14:16
调用部分也可以实例化一个DOMdocument对象,然后在查找路径的那种方式来找我们想要的内容

  1. //实例化一个dom对象
  2. //var_dump($html);
  3. $dom=new DOMDocument();
  4. //加载html忽略html不严谨的格式
  5. libxml_use_internal_errors(1);
  6. //dom下面执行加载loadhtml方法
  7. $dom->loadHTML($html);
  8. //将加载完的$dom对象当参数传递进去,转为xpath路径对象
  9. $xpath=new DOMXPath($dom);
  10. //查询路径值
  11. $path='//*[@id="main-wrap"]/div/div[3]/div[1]/div/a';
复制代码
  1. //生成对应的路径列表数据
  2. $nodelist=$xpath->query($path);
  3. //循环输出每一个对象调用他下面的属性取值
  4. foreach ($nodelist as $v){
  5.     var_dump($v->nodeValue);
  6. }
复制代码


关于如何寻找你的dom的xpath路径呢
(, 下载次数: 0)
此方法简单浏览器能帮你完成不要去写正则表达式好累!!!!!






欢迎光临 漫潮者,私有云,NAS,新媒体电商.软件开发,商乾 (https://www.aurrel.com/) Powered by Discuz! X3.4