首页 > 编程语言 >【放松娱乐】周末搞点好玩的,用PHP做爬虫的几种方法

【放松娱乐】周末搞点好玩的,用PHP做爬虫的几种方法

时间:2023-09-24 23:02:15浏览次数:52  
标签:搞点 ch setopt get url 爬虫 curl PHP CURLOPT

已经连着说了好几天的vim了,今天周末给大家很枯燥的讲了vim编辑器了,今天给大家放松一下,让我们来一起研究研究PHP怎么做爬虫,虽说php不如当先流行的python和java有现成的工具包,但是这不代表PHP不可以做爬虫!下面开始! image.png

PHP中有三种比较常见的方法可以进行做爬虫任务,分别为

  • get+file_get_contents()
  • 利用CURL
  • Snoopy

file_get_contents 该函数是可以把整个web网页当做文件进行读取,后续可以利用正则进行匹配所需要的数据。

file_get_contents(path,incude_path,context,start,max_length)
//path 必需,需要读取的文件
//inculde_path 可选,如果也需要在include_path中寻找的还,可将该参数设为1
//context,可选,文件的句柄环境
//start 可选,规定在文件中开始读取的位置
//max_length 可选。规定读取的字节数

//实例
function GetData1($url){
    $datas=file_get_contents($url);//发送请求,并返回获取到的页面数据
    return $datas;
  }
  $url="https://zhihu.com";
  print_r(GetData1($url));

CURL方式

第二种爬取数据的途径,通过curl库,我们可以向指定的网页发送数据(该网页没有对爬虫的检测机制),当然如果存在也不影响,可以通过curl的函数 curl_setopt($ch,option,value)进行伪装

但是该类型比较适合没有反扒机制的网站,如果有的话我们要伪装请求头。

function DetData2($url){
$ch=curl_init($url);
//中间可以参考curl的各类配置进行设置get/post以及各类请求头进行伪装自己
$datas=curl_exec($ch);
return $datas;
}

//实例
  function GetData2($url){
    $curl=curl_init($url);
    
    curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址  
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查  
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在  
    curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器  
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转  
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer  
    curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求  
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包  
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环  
    curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容  
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0); // 获取的信息以文件流的形式返回 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
    $tmpInfo = curl_exec($curl); // 执行操作  
    if (curl_errno($curl)) {  
       echo 'Errno'.curl_error($curl);//捕抓异常  
    }
    
    curl_close($curl);
    return $tmpInfo;
  }

$url = "https://zhihu.com";
$result = getData($url);
var_dump($result);

Snoopy

Snoopy,是一个及其强大的库,使用该库是需要下载对应的文件的 地址:https://sourceforge.net/projects/snoopy/files/latest/download ,大家可以直接使用进行操作。

include("Snoopy.php");//使用时不要忘记引入Snoopy类库
function GetData3($url){
      $ch=new Snoopy;//实例化
      $ch->agent = "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; Redmi 6 Pro Build/OPM1.171019.019) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";//设置浏览器环境
      $ch->referer="https://m.ting22.com/ting/1547-180.html";
      $ch->fetch($url);
      return $ch->results;//返回数据
    }

是不是很简单,代码就这么几行,但是这个还有更NB的,这个库可以去掉一些正则规则,它具有自动提取功能的。

$snoopy->fetchtext($url);//获取网页数据的全部文本数据
$snoopy->fetchlinks($url);//获取网页数据的全部链接
$snoopy->fetchform($url); //获取表单

这个我也是在研究阶段,大家可以没事的时候研究研究。好了最后祝大家周末愉快吧,马上中秋了我依然也会持续更新的。

标签:搞点,ch,setopt,get,url,爬虫,curl,PHP,CURLOPT
From: https://blog.51cto.com/u_16240159/7589422

相关文章

  • 针对爬虫导致服务资源飙升解决思路
    方案一:允许爬虫请求进行请求限制爬虫请求的频率:通过设置请求速率限制,可以有效控制爬虫请求的数量和频率,从而减轻对服务的压力。可以使用框架或库来实现请求速率限制,例如Python中的ratelimit库[1]。使用缓存机制:通过将爬虫请求的结果缓存起来,可以减少对服务的重复请求,降低CPU的负载......
  • [安洵杯 2019]easy_serialize_php
    [安洵杯2019]easy_serialize_php分析源码:<?php$function=@$_GET['f'];functionfilter($img){$filter_arr=array('php','flag','php5','php4','fl1g');$filter='/'.implode(......
  • Linux下安装php56教程:安装前准备及检查
    1.安装前准备在安装之前,我们需要先检查一下系统中是否已经安装了 php。可以通过以下命令来检查:$php-v如果系统中已经安装了php,则会显示当前php的版本信息。如果没有安装,则会提示“commandnotfound”。2.安装必要的依赖包在安装php5.6之前红旗linux官网,我们需要先安......
  • 爬虫入门基础探索Scrapy框架之Selenium反爬
     Scrapy框架是一个功能强大的Python网络爬虫框架,用于高效地爬取和提取网页数据。然而,有一些网站采用了各种反爬机制,例如JavaScript反爬、验证码等,这给爬虫的开发带来了挑战。为了解决这个问题,可以使用Selenium库来处理这些反爬机制。本文将介绍Selenium的基本原理和使用方法,以帮......
  • Linux网站搭建(nginx+php+mysql)
    目录nginx安装nginx服务器依赖环境源码安装和yum安装的区别源码安装源码安装三步走:php下载安装所有扩展:(php运行所需要的环境)编辑/etc/php.ini开启php-fpm在html下创建index.php,看一下是否可以网页中访问得到它编辑nginx配置文件重启服务mysql安装mysqlmysql的使用......
  • docker-compose 部署 phpmyadmin
    docker-compose.yamlversion:'3.9'services:phpmyadmin:image:phpmyadmincontainer_name:phpmyadminrestart:alwaysprivileged:trueenvironment:-PMA_HOST=192.168.0.152ports:-"8081:80"ne......
  • [一些总结]php中的弱相等和强相等
    PHP中的弱相等和强相等相关知识网络上有太多人总结了,但还是想自己动动手写点东西加深加深印象,哈哈。先看下GPT对弱相等和强相等的解释:在PHP中,弱相等(==)和强相等(===)是用于比较两个值的操作符,它们有以下区别:1.弱相等(==):弱相等用于比较两个值是否相等,不考虑值的数据类型。如......
  • php js+laravel+mysql手术麻醉临床信息系统
    医院手麻系统源码 技术架构:phpjs+laravel+mysql vue2elementB/S网页版手术麻醉临床信息系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字......
  • 【Python爬虫】批量爬取豆瓣电影排行Top250
    ​    今天给大家分享下我刚开始接触Python时学习的爬虫程序,代码部分很简单,不过当时刚开始学习时还是走了不少弯路的。这个爬虫程序应该是很多书里面的入门练手程序,主要就是去豆瓣爬取电影评分排行前250。        本篇文章只做学习交流使用,不涉及任何商业用途......
  • 手动下载并安装 PHP 和 WinCache
    https://learn.microsoft.com/zh-cn/iis/application-frameworks/scenario-build-a-php-website-on-iis/configuring-step-1-install-iis-and-php手动下载并安装PHP和WinCache打开浏览器到 WindowsforPHP下载页 并下载PHP非线程安全zip包。从 适用于PHP的......