zoukankan      html  css  js  c++  java
  • 利用phpspider爬取网站数据

    本文实例原址:PHPspider爬虫10分钟快速教程

    在我们的工作中可能会涉及到要到其它网站去进行数据爬取的情况,我们这里使用phpspider这个插件来进行功能实现。

    1、首先,我们需要php环境,这点不用说。

    2、安装composer,这个网上教程很多,这里不多做赘述,一面显得篇幅太长。

    3、利用composer进行phpspider安装。

      在安装的过程中,我们可能会遇到composer require长时间没反应的情况,这样的话。我们就需要换到中国镜像。方法如下:

      Packagist 镜像使用方法

      镜像配置好后,我们就进行phpspider的安装了。

      新建一个文件夹,这里暂时取名为composerInstallDemo。

      打开文件夹,并在文件夹地址栏中输入“cmd”直接进入该文件夹的cmd模式。

        

      

      再在dos窗口中输入一下命令:

      composer require owner888/phpspider

      出现一下界面,则证明,phpspider已经安装成功。

      

    4、编写自己的第一个爬虫程序。

      打开composerInstallDemo文件夹,在文件夹下新建一个php文件(名字随意,这里我创建的是index.php)

      

    <?php
    require '/vendor/autoload.php';
    use phpspidercorephpspider;
    
    /* Do NOT delete this comment */
    /* 不要删除这段注释 */
    
    $configs = array(
    'name' => '简书',
    'log_show' =>false,
    'tasknum' => 1,
    //数据库配置
    'db_config' => array(
    'host'  => '127.0.0.1',
    'port'  => 3306,
    'user'  => 'root',
    'pass'  => '',
    'name'  => 'demo',
    ),
    'export' => array(
    'type' => 'db',
    'table' => 'jianshu',  // 如果数据表没有数据新增请检查表结构和字段名是否匹配
    ),
    //爬取的域名列表  
    'domains' => array(
        'jianshu',
        'www.jianshu.com'
    ), 
    //抓取的起点
    'scan_urls' => array(
        'https://www.jianshu.com/c/V2CqjW?utm_medium=index-collections&utm_source=desktop'
    ),
    //列表页实例
    'list_url_regexes' => array(
        "https://www.jianshu.com/c/d+"
    ),
    //内容页实例
    //  d+  指的是变量
    'content_url_regexes' => array(
        "https://www.jianshu.com/p/d+",
    ),
    'max_try' => 5,
    
    'fields' => array(
        array(
            'name' => "title",
            'selector' => "//h1[@class='title']",
            'required' => true,
        ),
        array(
            'name' => "content",
            'selector' => "//div[@class='show-content-free']",
            'required' => true,
        ),
    ),
    );
    
    $spider = new phpspider($configs);
    $spider->start();


      稍微解释一下一下句法的含义:

    //h1[@class='title']
    获取所有class值为title的h1节点

    //div[@class='show-content-free']
    获取所有class值为show-content-free的div节点

      具体为什么这么写呢?自己看简书的html源码吧。

      打完代码后,记得根据要抓取的内容建立对应的数据库、数据表,字段要能对对上。

      数据库如下:
      
    5、万事俱备,只欠东风。
       接着cmd,输入php -f C:Users923DesktopcomposerInstallDemoindex.php
       运行如下
      
    6、打开数据看一下,是不是都抓取到了呢?
      
     
      

      

  • 相关阅读:
    System.IO命名空间
    Java调用Http/Https接口(8,end)OkHttp调用Http/Https接口
    javascript上传组件
    在ubuntu下安装MonoDevelop
    Sql Server中Null+nvarchar结果为null
    利用iframe实现javascript无刷新载入整页
    C#序列化和反序列化
    vmware7.0下搭建ubuntuNat上网/C++开发环境
    javascript模态窗口Demo
    为博客添加在线台湾卫星电视播放功能
  • 原文地址:https://www.cnblogs.com/573734817pc/p/10690152.html
Copyright © 2011-2022 走看看