网络/Netwrok - 应用层/网络编程 - 网络爬虫 - 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  // 推荐阅读 --- 认真阅读,花不了很久

Demo code: // 20120609 周三 家里

gitee: https://gitee.com/william_ning/the-learning-of-php-spider

gtihub: ningxiaofa/the-learning-of-php-spider · GitHub

Demo 1: 爬取简书的数据

code:https://gitee.com/william_ning/the-learning-of-php-spider/blob/main/jian_shu.php

一、PHP环境安装

和python一样,PHP也需要环境,可以使用官网下载的PHP,也可以使用XAMPP、PHPstudy 等集成环境下的PHP或者 Docker环境

比较推荐集成环境,省去单独安装Mysql数据库。---- 个人建议,怎么方便怎么来即可

二、Composer安装

Composer是PHP下的依赖包管理工具,类似于Python中的PIP

下载安装即可,win+R运行cmd,输入composer命令,出现如下图所示说明安装成功。

备注:

Composer相关操作参见: Composer - 学习/实践_穿素白衫的少年的博客-CSDN博客

三、phpspider安装

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

composer require owner888/phpspider

如下截图,便是成功安装了.

四、开始写第一个爬虫

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

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

demo.php

<?php


require './vendor/autoload.php';

use phpspider\core\phpspider;

/* 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();

截图:

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

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  回车即可

七、查看数据表

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

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

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

输出结果:

Note:

如果没有如期生成内容,要着重检查的地方有:

1. 首先确保匹配规则写的没问题,而且fields配置下的required最好刚开始测试时,别必用true,否则因为匹配规则写的不正确,加上required = true,就会导致一直没有数据被生成,即便有部分是匹配到了也会,整条丢弃掉~  -------- 这个没提示

2. 其他配置问题, 但是通常会有提示信息,要认真观察输出信息/日志

请记住:

日志信息通常可以解决大多数问题~~

Demo 2: 糗事百科

code: https://gitee.com/william_ning/the-learning-of-php-spider/blob/main/qiu_shi_bai_ke.php

1. 执行命令

php -f qiu_shi_bai_ke.php

2. 爬取结果

由上可知,爬取生成的csv文件如同期望~

这里爬取某个资源网站,花费的时间  0d 1h 27m 46s  只是一个系列

方式二:使用Python处理

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

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

Note:

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

后续补充

...

3.问题/补充

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

原因:

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

解决办法:

修改为如下即可.

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

可能原因:

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

解决办法:

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

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

TBD

后续补充

...

4.参考

通俗的讲,网络爬虫到底是什么? - 知乎   //通俗的讲,网络爬虫到底是什么?

PHPspider爬虫10分钟快速教程 - 简书  //php实现网络爬虫

概述 · phpspider开发文档  //phpspider php爬虫框架

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

后续补充

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值