iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >如何使用PHP蜘蛛爬虫框架来爬取数据
  • 548
分享到

如何使用PHP蜘蛛爬虫框架来爬取数据

2024-04-02 19:04:59 548人浏览 薄情痞子
摘要

这篇文章主要介绍了如何使用PHP蜘蛛爬虫框架来爬取数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用php蜘蛛爬虫框架来爬取数据文章都会有所收获,下面我们一起来看看吧。

这篇文章主要介绍了如何使用PHP蜘蛛爬虫框架来爬取数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用php蜘蛛爬虫框架来爬取数据文章都会有所收获,下面我们一起来看看吧。

  我的环境是宝塔lnmp,php是5.4版本,不要用这个版本,缺各种扩展库

  错误1:没有该扩展,不需要再php.ini中配置

  错误2:缺这个扩展库,不需要再php.ini中配置

  跑跑的报这个错:PHP Fatal error:  Call to undefined function phpspider\core\mb_detect_encoding() in / on line 474

  解决方法:执行 yum install php-mbstring -y

  1、在linux上跑demo。

  条件:linux上要有php环境,代码上传上去,执行php -f demo.php

  想退出这个页面执行quit 或 ctrl + c

  你可能会疑惑,这要跑,爬来的数据放到哪里了呢??

  2、需要在$configs中加这俩个配置(参考文档configs详解之成员):

  //日志存放的位置

  'log_file' => '',

  'export' => array(

  'type' => 'csv',

  'file' => '', //爬下来的数据放在data目录下,目录和文件要自己提前创建好

  )这里是存成了csv需要下载到本地电脑上看,因为这是个excel还是下载下来方便看

  当然你也可以存到数据库

  3、下面是一个完整的实例:

  3.1、思路 :具体还是要看代码,思路只是方便理解和记忆

  //这个页面是网站首页

  //这个页面是列表页

  //这个页面是列表页下面的页码

  这回我们就清晰了,我们要爬取的是列表页的数据:

  3.1.1、接下来设置爬取规则

  3.1.2、实例化,将配置传给这个类的构造函数

  3.1.3、添加新的url到带爬对列

  3.1.4、筛选爬到的数据,如标题弄出来,内容弄出来,并组装好数据...

  3.1.5、进行入库操作

  3.2、代码

  <?php

  require '';

  use phpspider\core\phpspider;

  use phpspider\core\requests;    //请求类

  use phpspider\core\selector;    //选择器类

  use phpspider\core\db;    //选择器类

  use phpspider\core\log;    //选择器类

  $configs=array(

  'name'=> '爬取新闻',

  //'log_show'=> true,

  //定义爬虫爬取哪些域名下的网页, 非域名下的url会被忽略以提高爬取速度

  'domains'=> array(

  ''    //写域名

  ),

  //定义爬虫的入口链接, 爬虫从这些链接开始爬取,同时这些链接也是监控爬虫所要监控的链接

  'scan_urls'=> array(

  ''

  ),

  //定义内容页url的规则

  'content_url_regexes'=> array(

  ""

  ),

  //爬虫爬取每个网页失败后尝试次数

  'max_try'=> 5,

  //爬虫爬取数据导出

  'export'=> array(

  'type'=> 'db',

  'table'=> 'pachong',    //表名

  ),

  'db_config'=> array(

  'host'=> 'localhost',

  'port'=> 3306,

  'user'=> '改成自己的',    //Mysql的账号

  'pass'=> '改成自己的',               //mysql的密码

  'name'=> '改成自己的',   //库名

  ),

  'fields'=> array(

  //从列表页开始爬

  array(

  'name'=> "lists",

  'selector'=> "'container')]//ul//li[contains(@class,'item')]",

  'required'=> true,

  'repeated'=> true  //写上是数组(抓的是整个列表页),不写是字符串(只抓第一个)

  ),

  ),

  //日志存放的位置

  'log_file'=> 'data/qiushibaike.log',

  //只记录 错误和调试日志

  'log_type'=> 'error,debug,warn,error',

  //爬虫爬取网页所使用的浏览器类型.随机浏览器类型,用于破解防采集

  'user_agent'=> array(

  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/52.0.2743.116 Safari/537.36",

  "Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_3 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13G34 Safari/601.1",

  "Mozilla/5.0 (Linux; U; Android 6.0.1;zh_cn; Le X820 Build/FEXCNFN5801507014S) AppleWebKit/537.36 (KHTML, like Gecko)Version/4.0 Chrome/49.0.0.0 Mobile Safari/537.36 EUI Browser/5.8.015S",

  ),

  //爬虫爬取网页所使用的伪IP。随机伪造IP,用于破解防采集

  'client_ip'=> array(

  '192.168.0.2',

  '192.168.0.3',

  '192.168.0.4',

  ),

  );

  $spider=new phpspider($configs);

  //爬虫初始化时调用, 用来指定一些爬取前的操作

  $spider->on_start=function($spider)

  {

  requests::set_header("Referer", "");

  };

  //在爬取到入口url的内容之后, 添加新的url到待爬队列之前调用. 主要用来发现新的待爬url, 并且能给新发现的url附加数据(点此查看“url附加数据”实例解析).

  $spider->on_scan_page=function($page,$content,$spider){

  //列表页只采集3页。

  for($i=0;$i<3;$i++){

  if($i==0){    //第一页

  $url="";

  }else{          //之后的n页

  $url="";

  }

  $options=[

  'method'=> 'get',

  'params'=> [

  'page'=> $i

  ],

  ];

  $spider->add_url($url,$options);    //添加新的url到待爬队列

  }

  };

  $spider->on_extract_field=function($filename,$data,$page){

  $arr=[];

  //处理抽取到的fields中name==lists的数据

  if($filename=='lists'){

  if(is_array($data)){

  foreach($data as $k=>$v){

  $img=selector::select($v,"");

  //如果该新闻没有图片,就删除这条数据

  if(empty($img)){

  unset($data[$k]);

  }else{

  $url="";

  $title=trim(selector::select($v,""));    //抓列表页的标题

  //抓列表页的图片

  if(substr(selector::select($v,""),0,1)){

  $title_imgs=selector::select($v,"");

  }else{

  $title_imgs=$url . ltrim(selector::select($v,""),'.');

  }

  $title_desc=trim(selector::select($v,""));    //抓列表页的新闻简介

  //抓文章,跳转到内容页

  $p='/<h4><a[^<>]+href * \=*["\']?([^\'"\+]).*?/i';

  $title_url=selector::select($v,$p,'regex');

  if(substr($title_url,0,1)=='h'){

  $title_link=$title_url;

  }else{

  $title_link=$url . ltrim($title_url,'.');

  }

  $title_time=strip_tags(selector::select($v,""));  //抓列表页的时间

  //组装数据

  $arr[$k]=[

  'title'=> $title,

  'title_imgs'=> $title_imgs,

  'title_desc'=> $title_desc,

  'title_link'=> $title_link,    //前往内容页的链接

  'title_time'=> $title_time,

  ];

  }

  }

  }

  }

  return $arr;

  };

  //入库操作

  $spider->on_extract_page=function($page,$data){

  //    echo "<pre>";

  //    var_dump($data);

  //    die;

  //处理哪个数据

  if(isset($data['lists'])){

  foreach($data['lists'] as $v){

  $arr=[

  'title'=> trim($v['title']),

  'title_imgs'=> urlencode($v['title_imgs']),

  'title_desc'=> $v['title_desc'],

  'title_link'=> urlencode($v['title_link']),

  'title_time'=> $v['title_time']

  ];

  //标题重复就不入库

  $sql="select count(*) as &mdash;&mdash;count&mdash;&mdash; from &mdash;&mdash;pachong&mdash;&mdash; where &mdash;&mdash;title&mdash;&mdash;".$v['title'];

  $row=db::get_one($sql);

  if(!$row['count']){

  db::insert('pachong',$arr);

  }

  }

  $data=$arr;

  }

  return $data;

  };

  $spider->start();

  3.3、表的结构

  4、按照作者的思想,每次爬取之前先要测试一下,该网站能不能爬到(参考文档:如何进行运行前测试)

  注意:这是测试用的,该页面请用浏览器直接访问,方便查看

关于“如何使用PHP蜘蛛爬虫框架来爬取数据”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何使用PHP蜘蛛爬虫框架来爬取数据”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网PHP编程频道。

--结束END--

本文标题: 如何使用PHP蜘蛛爬虫框架来爬取数据

本文链接: https://www.lsjlt.com/news/93666.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用PHP蜘蛛爬虫框架来爬取数据
    这篇文章主要介绍了如何使用PHP蜘蛛爬虫框架来爬取数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用PHP蜘蛛爬虫框架来爬取数据文章都会有所收获,下面我们一起来看看吧。...
    99+
    2024-04-02
  • 怎么使用python爬虫爬取数据
    本篇内容介绍了“怎么使用python爬虫爬取数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python爬出六部曲第一步:安装reques...
    99+
    2023-06-29
  • 如何使用Scrapy网络爬虫框架
    这篇文章将为大家详细讲解有关如何使用Scrapy网络爬虫框架,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。scrapy 介绍标准介绍Scrapy是一个为了爬取网站数据,提...
    99+
    2024-04-02
  • Python 爬虫:如何用 BeautifulSoup 爬取网页数据
    在网络时代,数据是最宝贵的资源之一。而爬虫技术就是一种获取数据的重要手段。Python 作为一门高效、易学、易用的编程语言,自然成为了爬虫技术的首选语言之一。而 BeautifulSoup 则是 Py...
    99+
    2023-10-23
    python 爬虫 beautifulsoup
  • 六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)
    用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 Python爬虫六部曲 第一步:安装request...
    99+
    2023-09-10
    python 爬虫 python入门 python爬虫 python爬虫爬取网页数据
  • 如何用六步教会你使用python爬虫爬取数据
    目录前言:python爬出六部曲第一步:安装requests库和BeautifulSoup库:第二步:获取爬虫所需的header和cookie:第三步:获取网页:第四步:解析网页:第...
    99+
    2024-04-02
  • 怎么用Scrapy爬虫框架爬取食品论坛数据并存入数据库
    这篇文章主要介绍“怎么用Scrapy爬虫框架爬取食品论坛数据并存入数据库”,在日常操作中,相信很多人在怎么用Scrapy爬虫框架爬取食品论坛数据并存入数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用...
    99+
    2023-06-17
  • python爬虫如何爬取微博粉丝数据
    这篇文章主要介绍了python爬虫如何爬取微博粉丝数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,P...
    99+
    2023-06-14
  • python爬虫如何获取数据
    使用Python爬虫获取数据可以分为以下几个步骤: 导入所需的库:通常情况下,使用requests库发送HTTP请求获取网页内容,...
    99+
    2024-02-29
    python
  • 怎么使用python爬虫爬取二手房数据
    这篇文章主要介绍怎么使用python爬虫爬取二手房数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和floa...
    99+
    2023-06-14
  • Python爬虫教程使用Scrapy框架爬取小说代码示例
    目录Scrapy框架简单介绍创建Scrapy项目创建Spider爬虫Spider爬虫提取数据items.py代码定义字段fiction.py代码提取数据pipelines.py代码保...
    99+
    2024-04-02
  • python爬虫之教你如何爬取地理数据
    目录一、shapely模块1、shapely2、point→Point类3、导入所需模块4、Point(1)、创建point,主要有以下三种方法(2)、point常用属性(3)、po...
    99+
    2024-04-02
  • 如何使用Python爬虫爬取网站图片
    这篇文章主要介绍了如何使用Python爬虫爬取网站图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。此次python3主要用requests,解析图片网址主要用beautif...
    99+
    2023-06-22
  • 如何使用Java爬虫批量爬取图片
    目录Java爬取图片爬取思路具体步骤具体代码实体类 Picture 和 工具类 HeaderUtil下载类最重要的类:解析页面类 PictureSpider启动类 BootStrap...
    99+
    2023-05-15
    Java爬虫 Java爬虫批量 批量爬取图片
  • java爬虫如何爬取猫眼电影TOP榜数据
    这篇文章给大家分享的是有关java爬虫如何爬取猫眼电影TOP榜数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。爬虫是如何爬取猫眼电影TOP榜数据的。主要抓取的内容有排名、图片、电影名称、主演、上映时间和评分信息...
    99+
    2023-06-02
  • 爬虫Scrapy框架之css选择器如何使用
    这篇文章将为大家详细讲解有关爬虫Scrapy框架之css选择器如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css选择器介绍在css中选择器是一种模式,用于选择需要添加样式的元素,css对html...
    99+
    2023-06-02
  • 如何使用PHP做异步爬取数据
    这篇“如何使用PHP做异步爬取数据”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何使用PHP做异步爬取数据”文章吧。什么是...
    99+
    2023-07-05
  • 如何使用nodejs爬取数据
    如何使用nodejs爬取数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、本次爬虫目标    从网站中爬取数据,并...
    99+
    2024-04-02
  • 如何使用python爬虫爬取大学排名信息
    这篇文章将为大家详细讲解有关如何使用python爬虫爬取大学排名信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 这次爬取的网址请搜索“阿凡题”(纯技术讨论)“阿凡题”(纯技术讨论) 在该网址选择查院校...
    99+
    2023-06-02
  • PHP中如何进行网络爬虫和数据抓取?
    随着互联网时代的到来,网络数据的爬取与抓取已成为许多人的日常工作。在支持网页开发的程序语言中,PHP以其可扩展性和易上手的特点,成为了网络爬虫和数据抓取的热门选项。本文将从以下几个方面介绍PHP中如何进行网络爬虫和数据抓取。一、HTTP协议...
    99+
    2023-05-20
    PHP 网络爬虫 数据抓取
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作