前言
前段時(shí)間接到一個(gè)開發(fā)采集網(wǎng)站數(shù)據(jù)的項(xiàng)目盐固,從事php開發(fā)的我立刻想到使用php做爬蟲。雖然python爬蟲方便丈挟,但是php在這方面也不弱刁卜,誰(shuí)讓php是世界上最好的語(yǔ)言!這里推薦一款php的爬蟲框架phpspider曙咽。不建議自己寫爬蟲蛔趴,因?yàn)樾侍汀J褂每蚣芘老x真的要高效許多
官方文檔:
1桐绒、下載
官方github下載地址:
https://github.com/owner888/phpspider
下載地址可能無(wú)法訪問夺脾,這里提供一個(gè)網(wǎng)盤下載地址:
***https://pan.baidu.com/s/10n9ZOUQBlrJzOQx0ShOmMQ ***
***提取碼:b2zc ***
2、文件結(jié)構(gòu)
下載解壓后茉继,phpspider的文件結(jié)構(gòu)如圖所示:
其中demo文件夾放的是phpspider的一些案例咧叭,如圖所示:
3、創(chuàng)建爬蟲并且運(yùn)行
在demo文件夾下創(chuàng)建爬蟲文件烁竭。需要注意的是菲茬,phpspider有兩種運(yùn)行爬蟲文件的方式,一種是在命令行下運(yùn)行派撕;另外一種是可視化操作(在瀏覽器下運(yùn)行)
3.1 在命令行下運(yùn)行爬蟲文件
要爬取的對(duì)象鏈接:
https://www.douban.com/photos/album/1616649448/
要爬取的內(nèi)容如圖所示:
爬取id為wrapper的div所包含的內(nèi)容
3.1.1 在demo文件夾下新建文件spider.php婉弹,代碼如下:
<?php
require_once __DIR__ . '/../autoloader.php';
use phpspider\core\phpspider;
/* Do NOT delete this comment */
/* 不要?jiǎng)h除這段注釋 */
$configs = array(
'name' => '豆瓣',//定義當(dāng)前爬蟲名稱
'log_show' => true, //顯示日志調(diào)試信息
'input_encoding' => 'UTF-8',//輸入編碼
//定義爬蟲爬取哪些域名下的網(wǎng)頁(yè), 非域名下的url會(huì)被忽略以提高爬取速度
'domains' => array(
'www.douban.com'
),
//定義爬蟲的入口鏈接, 爬蟲從這些鏈接開始爬取,同時(shí)這些鏈接也是監(jiān)控爬蟲所要監(jiān)控的鏈接
'scan_urls' => array(
'https://www.douban.com/photos/album/1616649448/'
),
//爬蟲爬取數(shù)據(jù)導(dǎo)出
'export' => array(
'type' => 'csv', //type:導(dǎo)出類型 csv、sql终吼、db
'file' => '../data/abc.csv', //file:導(dǎo)出 csv镀赌、sql 文件地址,如果不存在文件自動(dòng)創(chuàng)建
),
//定義內(nèi)容頁(yè)的抽取規(guī)則
'fields' => array(
array(
'name' => "wrapper",
'selector' => "http://div[@id='wrapper']",
)
)
);
$spider = new phpspider($configs);
$spider->start();
3.1.2 在demo文件夾中直接打開cmd命令面板际跪,輸入命令行 php -f spider.php 回車商佛,代碼跑起來(lái)喉钢,如圖所示:
3.1.3 查看爬取下來(lái)的數(shù)據(jù)
在phpspider文件結(jié)構(gòu)中找到data文件夾下的abc.csv文件,打開文件可看到爬取下來(lái)的數(shù)據(jù)良姆,如圖所示:
3.2 可視化操作(在瀏覽器下運(yùn)行爬蟲文件)
要爬取的對(duì)象鏈接:
https://movie.douban.com/subject/26588308/?from=showing
要爬取的內(nèi)容如圖所示:
爬取class為nav-items的div所包含的內(nèi)容
3.2.1 在demo文件夾下新建另外一個(gè)文件test.php肠虽,代碼如下:
<?php
header("Content-Type: text/html;charset=utf-8");
date_default_timezone_set("Asia/Shanghai");
ini_set("memory_limit", "10240M");
require_once __DIR__ . '/../autoloader.php';
use phpspider\core\phpspider;
use phpspider\core\requests;
use phpspider\core\selector;
/* Do NOT delete this comment */
/* 不要?jiǎng)h除這段注釋 */
$html = requests::get('https://movie.douban.com/subject/26588308/?from=showing');
$data = selector::select($html, "http://div[@class='nav-items']");
echo $data;
3.2.2 打開瀏覽器輸入文件地址
結(jié)語(yǔ)
以上只是簡(jiǎn)單的爬蟲例子,還可以進(jìn)行多進(jìn)程爬取玛追,代理爬蟲税课,很多好玩的,更多操作參考官方文檔