pyspider的搭建及爬取時遇到的坑

pyspider時基於python寫的一款爬蟲框架,在window部署時會遇到一些莫名的錯誤,因此我是在Linux系統安裝並且使用的。我使用的是騰訊雲服務器上使用的。

安裝Python、pyspider(要懂一些Linux命令和vim操作)

1、 搭建環境準備(第一次在服務器上運行這些命令時速度較慢,第二次執行會在最後出現nothing do的提示)
① Yum更新
yum update –y
更新centOS系統和其包(爲什麼不使用yum –y update? 答:環境搭建不需要更新操作系統和軟件設置)。
② 安裝開發編譯工具
yum install gcc gcc-c++ -y
(安裝的GUN編譯器,安裝包名要全名,例如:將gcc-c++打成-c++會出現yum.cli:Config Error。錯誤)。
③ 安裝依賴庫

yum install python-pip python-devel python-distribute libxml2 libxml2-devel python-lxml libxslt libxslt-devel openssl openssl-devel –y

④ 升級pip
(升級目的是爲了部署的穩定性和功能是實現)

2、部署數據庫mariadb (centOS 7中將MySQL從默認的程序列表中移除,我們可以用mariadb代替,他可以完全執行MySQL的執行命令,很好的兼容MySQL)
①安裝mariadb數據庫
yum install mariadb-server mariadb –y 執行命令後,看到complete!說明安裝完成
注:如果想刪除雲端數據庫,執行 yum remove mariadbyum remove mysql
②啓動 mariadb服務(會有2秒的停頓)
③設置root密碼(默認的賬號爲root 默認的密碼爲空,密碼也可以不設置)
可以使用mysqladmin -u root password "param"來設置你的數據庫密碼,其中param爲你要設置的密碼。

3、安裝pyspider
step 1:安裝pip

sudo apt-get install python-pip

step 2:安裝Phantomjs

sudo apt-get install phantomjs

step 3:安裝Pyspider
根據官方文檔,在在安裝pyspider之前,你需要安裝以下類庫

sudo apt-get install python python-dev python-distribute python-pip libcurl4-openssl-dev libxml2-dev libxslt1-dev python-lxml

安裝過程完成之後,運行

sudo pyspider all

瀏覽器輸入 http:域名://5000有這種界面就說明登入成功
這裏寫圖片描述

在這推薦下:在學習時先去
pyspider官網
pyspider中文網
學習手冊,看看官方文檔,對於它的使用網上有很多教程,在這我講下我在爬蟲時,遇到的一些坑
1、存入數據庫的格式不對(默認是二進制數據)
解決:在腳本語言中寫入

def on_result(self, result):
        if not result:
            return
        self.sql.replace(**item) 

這裏是將數據寫入數據庫的格式改變了(將return的數據)

2、對於網頁的返回的不同的數據
①返回json格式
解決:通過對其字符串的截取,重新獲取其URL地址
②在前端調用其前端的js
解決:在腳本自己寫一個類,如同的js方法
③有渲染頁面,無法加載
解決:在crawl函數中添加fetch_type=”js”函數
④URL地址正確,而crawl函數卻無法抓取頁面
解決:首先,你要對http請求有一定了解
通過設置self.methon、self.header、self.data、self.param等函數模仿其頁面請求
⑤數據從一個函數傳入其他函數
解決:pyspider在crawl函數中提供了save函數,提供這功能
⑥對於同樣的URL處理
解決:重寫其get_taskid方法,如下

 def get_taskid(self, task): 
        return md5string(task['url']+json.dumps(task['fetch'].get('data', '')))    

⑦對於有時間戳、token(移動端)
解決:首先使用fiddler抓取其請求,然後獲取當前的時間,將其用戶信息及當前時間發送給服務器,以保證其請求時最新的,驗證通過

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章