• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于php网络爬虫phpspider

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

     前几天,被老板拉去说要我去抓取大众点评某家店的数据,当然被我义正言辞的拒绝了,理由是我不会。。。但我的反抗并没有什么卵用,所以还是乖乖去查资料,因为我是从事php工作的,首先找的就是php的网络爬虫源码,在我的不懈努力下,终于找到phpspider,打开phpspider开发文档首页我就被震惊了,标题《我用爬虫一天时间“偷了”知乎一百万用户,只为证明PHP是世界上最好的语言 》,果然和我预料的一样,php就是世界上最好的语言。废话少说,下面开始学习使用。

      首先看的是提供的一个demo,代码如下:

  

 
$configs = array(
    \'name\' => \'糗事百科\',
    \'domains\' => array(
        \'qiushibaike.com\',
        \'www.qiushibaike.com\'
    ),
    \'scan_urls\' => array(
        \'http://www.qiushibaike.com/\'
    ),
    \'content_url_regexes\' => array(
        "http://www.qiushibaike.com/article/\d+"
    ),
    \'list_url_regexes\' => array(
        "http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
    ),
    \'fields\' => array(
        array(
            // 抽取内容页的文章内容
            \'name\' => "article_content",
            \'selector\' => "//*[@id=\'single-next-link\']",
            \'required\' => true
        ),
        array(
            // 抽取内容页的文章作者
            \'name\' => "article_author",
            \'selector\' => "//div[contains(@class,\'author\')]//h2",
            \'required\' => true
        ),
    ),
);
$spider = new phpspider($configs);
$spider->start();
 

每项具体的信息,可以去 https://doc.phpspider.org/demo-start.html 查看,哪里比较详细,这里只说下我走的弯路,

domains是定义采集的域名,只在该域名下采集,
content_url_regexes是采集的内容页,使用chrome查看网页源码,然后使用selector选择器定位,selector使用xpath格式定位参数,当然也可以用css来选择。
list_url_regexes列表页,每个列表页抓取多条content_url_regexes的url循环采集。
还有一些其他参数没有列出来,例如:
 \'max_try\' => 5,
   \'export\' => array(
        \'type\' => \'db\', 
        \'conf\' => array(
            \'host\'  => \'localhost\',
            \'port\'  => 3306,
            \'user\'  => \'root\',
            \'pass\'  => \'root\',
            \'name\'  => \'demo\',
        ),
        \'table\' => \'360ky\',
    ),
max_try 同时工作的爬虫任务数。
export采集数据存储,有两种格式,一种是写到数据库中,一种是直接生成.csv格式文件。
只要url规则写的对,就可以运行,不用管框架里面的封装。当然,此框架只能在php-cli命令行下运行,所以使用前要先配置环境变量,或者cd到php安装路径运行。
最后成功采集到大众点评某点的一千多条数据。
====================20201230完成测试版==============

<?php
/**
 *User: lxw
 *Date: 2020-12-29
 */
require_once __DIR__ . \'/../autoloader.php\';
use phpspider\core\phpspider;
/* Do NOT delete this comment */
/* 不要删除这段注释 */ // 不清楚他这个意思,不知道为啥不能删除

$configs = array(
    \'name\' => \'糗事百科\',
    \'log_show\' => true,
    \'tasknum\' => 1,
    \'domains\' => array(
        \'qiushibaike.com\',
        \'www.qiushibaike.com\'
    ),
    \'scan_urls\' => array(
        \'http://www.qiushibaike.com\'
    ),
    \'content_url_regexes\' => array(
        "http://www.qiushibaike.com/article/\d+"
    ),
    \'list_url_regexes\' => array(
        "http://www.qiushibaike.com/8hr/page/\d+"
//        "http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
    ),


    \'max_try\' => 5,
    // 数据库配置
    \'db_config\' => array(
        \'host\' => \'127.0.0.1\',
        \'port\' => 3306,
        \'user\' => \'**\',
        \'pass\' => \'**\',
        \'name\' => \'lxw_db\'
    ),
    \'export\' => array(
        \'type\' => \'db\',
        \'table\' => \'360ky\' //添加表, jianshu ,
    ),
    \'fields\' => array(
        array(
            // 抽取内容页的文章内容
            \'name\' => "title",
            \'selector\' => "//h1[contains(@class,\'article-title\')]",
            \'required\' => true
        ),
        array(
            // 抽取内容页的文章作者
            \'name\' => "author",
            \'selector\' => "//span[contains(@class,\'side-user-name\')]",
            \'required\' => true
        ),
        array(
            // 抽取内容页的文章内容
            \'name\' => "content",
            \'selector\' => "//*[@id=\'single-next-link\']",
            \'required\' => true
        ),
    ),
);

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

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
PHP session过期机制和配置发布时间:2022-07-10
下一篇:
总结几种常见web攻击手段及其防御方式 - 天心PHP发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap