1. 程式人生 > >phpspider php爬蟲框架

phpspider php爬蟲框架

unknown tor not 但是 composer sel || https span

其實我自身的不是經常寫正則,而且不規則的html去寫正則本身就是件很麻煩的事情,如果頁面有些微變動和更新就得再次去維護正則表達式,其實是非常蛋疼的

我第一感覺就是去找一下爬蟲的庫,但是發現現在php爬蟲成熟的開源項目還挺多的

最開始我是準備使用phpquery,因為他實現了類似jQuery的功能,可以減少我花費的時間,但是畢竟是6年前的項目,原項目在http://code.google.com/p/phpquery/上,github雖然已經有人copy過去了,

年久失修,因為不是特別好使用,也別現在啥玩意都需要composer安裝,沒有提交到https://packagist.org,但是現在新項目好多都是基於php7的,有點過時了,

中了一會發現現在phpspider挺好用,註意不是php-spider,而且有中文文檔,但是還沒有特別完善,https://doc.phpspider.org/

https://github.com/owner888/phpspider

註意:本框架只能在命令行下運行,命令行、命令行、命令行,重要的事情說三遍 ^_^

但是我需要在web下運行,test_requests.php 發現已經實現了css選擇器作為替代手寫正則表達式的方法,很好,強不強大等用戶自己使用過後再自己評價

可以直接在web上運行

use phpspider\core\requests;
use phpspider\core\selector;

引入



$html = requests::get(‘http://www.ccmn.cn/‘); $data = selector::select($html, "#40288092327140f601327141c0560001", "css"); $data1 = selector::select($data, "tr", "css"); array_shift($data1); $array = array(); if (!empty($data1) && is_array($data1)) {
foreach ($data1 as $k => &$v) { $data2 = selector::select($v, "td", "css"); foreach ($data2 as $kk => &$vv) { $vv = str_replace(‘
‘, ‘‘, $vv); $vv = str_replace(array("\r\n", "\r", "\n"), "", $vv); $vv = trim($vv); } $data2[‘3‘] = selector::select($data2[‘3‘], "font", "css"); unset($data2[‘6‘]); $array[] = $data2; }

就完成了一個還算有一點點復雜的網頁固定位置的抓取

很簡單對吧

https://doc.phpspider.org/selector.html

官方支持更強大的css選擇器,基本常用的足夠了

和寫jquery的感覺差不多

還有這個是cli運行,

註意不要刪了

#/\* Do NOT delete this comment \*/#

#/\* 不要刪除這段註釋 \*/#

會報錯,因為蛋疼去匹配了這些

        if (!preg_match("#/\* Do NOT delete this comment \*/#", $content) || !preg_match("#/\* 不要刪除這段註釋 \*/#", $content))
        {
            $msg = "Unknown error...";
            log::error($msg);
            exit;
        }

有點強迫癥的感覺

源碼還沒時間讀,確實值得一讀

目前其他功能測試過在寫入博客

phpspider php爬蟲框架