网络爬虫 - PHP/Python - 学习/实践

1.应用场景

获取有用信息资源,获取价值, 但是注意要在法律范围内行走.

2.学习/操作

环境:

Windows10 64位 专业版

phpstudy v8.0

php 7.3

mysql 8.0

Python 3.x

 

方式一:

使用PHP处理 

说到做爬虫,大家都可能第一时间想到的是python,其实php也是可以用来写爬虫程序的。

php一贯简洁、易用,使用PHPspider框架10分钟就能写出一个简单的爬虫程序。

 

开发文档[中文]:https://doc.phpspider.org  //推荐阅读

网络爬虫 - PHP/Python - 学习/实践_第1张图片

 

爬取简书的数据 

一、PHP环境安装

和python一样,PHP也需要环境,可以使用官网下载的PHP,也可以使用XAMPP、PHPstudy[详情可见https://blog.csdn.net/william_n/article/details/103273722]等集成环境下的PHP。比较推荐集成环境,省去单独安装Mysql数据库。

 

二、composer安装

composer是PHP下的依赖包管理工具,类似于Python中的PIP。
中文官网为https://www.phpcomposer.com/
下载安装即可,win+R运行cmd,输入composer命令,出现如下图所示说明安装成功。

网络爬虫 - PHP/Python - 学习/实践_第2张图片

备注:

composer相关操作参见: 

https://blog.csdn.net/william_n/article/details/94445926

 

三、PHPspider安装

在任意位置建立一个文件夹,例如我们要抓取简书的数据,我们可以在D盘建立jianshu文件夹,然后cmd命令进入该文件夹,运行命令

composer require owner888/phpspider

 

如下结果便是成功安装了.

网络爬虫 - PHP/Python - 学习/实践_第3张图片

 

四、开始写第一个爬虫

现在打开jianshu文件夹,会发现里面多了一些东西[都是PHPspider的依赖的包],不用管它,建立一个demo.php文件,开始编写代码.

网络爬虫 - PHP/Python - 学习/实践_第4张图片

 

代码如下, 具体含义,不加详说[可以查看文档, 很方便], 通过很简单的配置就可以快速运行起来.

demo.php

 

require './vendor/autoload.php';

use phpspider\core\phpspider;

/* Do NOT delete this comment */
/* 不要删除这段注释 */

$configs = array(
    'name' => '简书',
    'log_show' => true,
    'tasknum' => 1,
//数据库配置
    'db_config' => array(
        'host' => '127.0.0.1',
        'port' => 3306,
        'user' => 'root',
        'pass' => 'rootroot',
        'name' => 'spide_demo', //数据库名
    ),
    'export' => array(
        'type' => 'db',
        'table' => 'jianshu',  //数据表名, 如果数据表没有数据新增请检查表结构和字段名是否匹配
    ),
    /*'export' => array(
        'type' => 'csv',
        'file' => './data/jianshu.csv', // data目录下
    ),*/
//爬取的域名列表
    'domains' => array(
        'jianshu.com',
        '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+"
    ),
//内容页实例
    'content_url_regexes' => array(
        "https://www.jianshu.com/p/\d+",
    ),
    'max_try' => 5,

    'fields' => array(
        array(
            'name' => "title",
            //'selector' => "//h1[@class='title']", //获取所有class值为title的h1节点,  但后面命令中执行时, 提示没有找到, 要结合实际的网页情况而定 content相同
            'selector' => "//h1",
            'required' => true,
        ),
        array(
            'name' => "content",
            //'selector' => "//div[@class='show-content-free']",  //获取所有class值为show-content-free的div节点
            'selector' => "//article",
            'required' => true,
        ),
    ),
);

$spider = new phpspider($configs);
$spider->start();

 

五、代码编写完毕 , 新建数据库以及数据表, 表结构如下:

网络爬虫 - PHP/Python - 学习/实践_第5张图片

SQL:

-- ----------------------------
-- Table structure for jianshu
-- ----------------------------
DROP TABLE IF EXISTS `jianshu`;
CREATE TABLE `jianshu`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

 

 

六、命令行写执行 

进入jianshu目录下, 执行  php -f demo.php  回车即可

网络爬虫 - PHP/Python - 学习/实践_第6张图片

 

七、查看数据表

网络爬虫 - PHP/Python - 学习/实践_第7张图片

 

 

由上可知, 简单的爬虫功能初步完成. 但是仍需要优化.可以封装成通用组件, 采用面向对象编写  =====> TBD

 

如果爬取为csv文件, demo.php中修改为如下即可

/*'export' => array(
        'type' => 'csv',
        'file' => './data/jianshu.csv', // data目录下
    ),*/

 

输出结果:

网络爬虫 - PHP/Python - 学习/实践_第8张图片

方式二:

使用Python处理

 

将自己在极客时间上买的付费栏目下载到本地 

https://blog.csdn.net/william_n/article/details/106570103

 

Note:

如下项目仅限学习交流使用,请勿用于任何商业行为和损害其它人利益的行为

 

后续补充

...

3.问题/补充

1.使用composer安装PHPspider, 命令行下执行, 没有任何输出提示, 如下, 如何解决?

原因:

框架核心文件未被加载进来, 断电调试一下即可.得知 require '/vendor/autoload.php'; 路径不对

解决办法:

修改为如下即可.

 

2.数据表中未出现数据?

可能原因:

选择标识符编写不准确, 即未定位到所要采集的数据[HTML元素].

解决办法:

解决实际爬取的网页, 编写修正为正确的选择标识符.  //可以先放宽调试,定位原因

 

3.实际工业生产环境中, 爬虫的具体流程是怎样? 最佳实践?

TBD

 

 

后续补充

...

4.参考

https://www.zhihu.com/question/24098641?sort=created   //通俗的讲,网络爬虫到底是什么?

https://www.jianshu.com/p/01052508ea7c  //php实现网络爬虫

https://doc.phpspider.org/  //phpspider php爬虫框架

https://blog.csdn.net/william_n/article/details/106570103  //Python - 安装/实践

后续补充

...

你可能感兴趣的:(爬虫-SPIDER,网络爬虫,web,crawler,PHP,Python)