Pyspider — 踩坑篇

Bing Kuo
4 min readJun 7, 2019

--

問題總覽:

  1. Script Editor運行正常,但實際在進行爬取卻沒反應?
  2. HTTP 599: Unknown
  3. 如何刪除專案?
  4. 如何關閉Pyspider服務?
  5. Pyspider無法啟動
  6. Pyspider預覽介面太小
  7. wsgidav版本問題

1. Script Editor運行正常,但實際在進行爬取卻沒反應?

Q:不使用Config很正常,結果連接Mysql資料庫後,發生以上問題。
A:專案名稱使用全部小寫,猜測是寫進Mysql的table名稱都是小寫,跟有大寫的專案名稱對應不上,導致在「編輯模式運行正常,實際在進行爬取卻沒反應」,所以,下次有以上狀況,不妨檢查一下大小寫問題。

2. HTTP 599: Unknown

Q:部分爬蟲會出現HTTP 599: UnKnown問題
A:重新安裝pycurl,依據issues#326的解決方法,我是Windows,步驟二換成設定環境變數PYCURL_SSL_LIBRARY=openssl。

pip uninstall pycurl
export PYCURL_SSL_LIBRARY=openssl
pip install pycurl

3. 如何刪除專案?

Q:預設刪除專案,要將狀態改為STOP,然後等24小時…如何加快刪除專案?
A:(一)設定scheduler.DELETE_TIME,(二)直接從projectdb刪除
依據issues380的解決方法,但我比較喜歡的方式是從projectdb直接刪除。

4. 如何關閉Pyspider服務?

Q:因為執行時選擇背景執行,要怎麼關閉pyspider服務?
A:刪除就找到pyspider跟phantomjs的process並把他刪掉就可以囉!以下是Windows環境語法:

taskkill /f /im "pyspider.exe" & taskkill /f /im "phantomjs.exe"

5. Pyspider無法啟動

Q:Pyspider無法啟動,一直停留在[I 190604 20:05:42 result_worker:49] result_worker starting...
A:如果你是使用文件儲存pyspider檔案(projectdb, resultdb, taskdb以文件體驗),這時候可以嘗試將 result.db, task.db, scheduler.all, scheduler.1d, scheduler.1h刪除,再重新啟動一次pyspider,切記,不要刪除project.db,你寫的程式都存在這當中!

A:如果你是將pyspider檔案存到資料庫,那我會先kill現有的pyspider跟phantomjs服務(語法參考上方),藉著再重新啟動一次,開啟網頁看看是否啟動成功,若還是不行,那就再kill、啟動一次,不確定原因,但重複個一兩次基本上都能成功。

6. Pyspider預覽介面太小

Q:在Script Editor頁面,html的iframe預覽高度太小
A:修改原套件的css,搜尋iframe-box,把height="50%;"改為height="450px;",位置在pyspider套件下的webui,依我的為例,我安裝在anaconda虛擬環境,位置[your path]/anaconda3/envs/[env name]/Lib/site-packages/pyspider/webui/static/debug.min.css,接著重新請動pyspider,並且清除瀏覽器暫存。

7. wsgidav版本問題

Q:我有點忘記了哈哈…,這是我之前留下來的紀錄
A:網路上解決方是wsgidav降版

pip uninstall wsgidav
python -m pip install wsgidav==2.4.1

延伸閱讀

--

--