使用phpspider抓取網站文章


本示例使用phpspider作為爬蟲,抓取了華爾街見聞部分欄目文章,下面是具體的實現過程。

phpspider 文檔:https://doc.phpspider.org/demo-start.html

第一步:使用composer下載phpspider,命令如下:

1 composer require owner888/phpspider

生成的composer.json文件內容如下

1 {
2     "require": {
3         "owner888/phpspider": "^2.1"
4     }   
5 }

第二步:在composer.json文件的同級目錄下,創建spider.php腳本文件,內容如下:

 1 <?php
 2 require './vendor/autoload.php';
 3 
 4 use phpspider\core\phpspider;
 5 /* Do NOT delete this comment */
 6 /* 不要刪除這段注釋 */
 7 //看了一下源代碼,作者將這注釋寫到構造函數中了,所以尊重作者意願,沒有去掉,去掉會報錯。
 8 $configs = array(
 9     'name' => '華爾街日報',
10     'domains' => array(
11         'wallstreetcn.com',
12     ),
13     'scan_urls' => array(
14         'http://wallstreetcn.com/'   //華爾街見聞網址
15     ),
16     'content_url_regexes' => array(
17         "http://wallstreetcn.com/articles/\d+"    //華爾街見聞網站文章url模式
18     ),
19     'fields' => array(
20         array(
21             // 抓取內容頁的文章內容
22             'name' => "article_content",
23             'selector' => "//*[@class='node-article-content']",   //文章內容區域class
24             'required' => true
25         ),
26             // 抓取內容頁的文章題目
27         array(
28                 'name'=>'article_title',
29                 'selector'=>"//*[@class='article__heading__title']",   //文章題目區域class
30                 'required'=>true
31         ),
32         //抓取內容頁文章時間
33         array(
34                 'name'=>'article_time',
35                 'selector'=>"//*[@class='meta-item__text']",     //文章發布時間區域class
36                 'required'=>true
37         ),
38     ),
39         //腳本輸出類型,輸出到數據庫
40         'export'=>array(
41                 'type'=>'db',
42                 'table'=>'articles'  //存放文章的數據表
43         ),
44         //數據庫連接配置
45         'db_config'=>array(
46                 'host'=>'127.0.0.1',
47                 'port'=>3306,
48                 'user'=>'mysql',  //連接數據庫的用戶名,根據自己環境定義
49                 'pass'=>'123456',  //連接數據庫的密碼,根據自己環境定義
50                 'name'=>'test'   //存放的數據庫
51         ),
52 
53 );
54 
55 
56 $spider = new phpspider($configs);
57 $spider->start();

第三步:創建文章表articles,SQL語句如下:

 1 mysql> show create table articles \G
 2 *************************** 1. row ***************************
 3        Table: articles
 4 Create Table: CREATE TABLE `articles` (
 5   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 6   `article_content` text NOT NULL,
 7   `article_title` varchar(255) NOT NULL DEFAULT '',
 8   `article_time` varchar(64) NOT NULL DEFAULT '',
 9   PRIMARY KEY (`id`)
10 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
11 1 row in set (0.00 sec)
12 
13 mysql>

第四步:命令行下運行腳本spider.php
php spider.php

如下圖示:

速度還可以,只開啟一個任務,三分鍾左右就抓取了100文章,如果覺得慢,可以多開幾個任務,在spider.php中config數組中配置

注意第一次測試的時候,articles表中article_content使用的類型是varchar,入庫后發現文章內容都被截斷了,只有部分,后來改為text類型就完整存放下了。
下面是數據抓取入庫后的部分截圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM