動態內容_PyV8安裝之路

在開始這次內容前,先來整理一下思路吧!

上次的初級爬蟲之後,已經能確實的發送HTTP要求,也能成功得到html檔了,但是這個靜態文檔最關鍵的資源(我想要的圖片),居然消失了!
沒錯!就是一片空白,解析不到東西。
疑惑之餘,開始去網路讀更多資料,
然後更徹底的觀察整個要求發生的過程。

上次的這張截圖就告訴我們了
真正發送圖片要求,是經過對話框的四個過程!

看到這邊就知道接下來要邁向取得動態內容了。

關PyV8何事? 為了表現我當初走很久才知道他,現在還不能請他出來。

為了取得圖片URL,可以看出答案就藏在js裡
這邊我知道能前進的方向有:

觀察.JS:
  1. 可以自己觀察.JS設計規則後模擬取得
  2. 直接帶回原程式.JS得到到答案

不觀察.JS:
     3.  直接用模擬瀏覽器的方式將整個生成結果都抓回來!
selenium + PhantomJS

最後我決定採用2 (時間成本最低)
因此我需要新的環境
也就是讓Python能嫁接JavaScript
終於回到正題了

  • 安裝PyV8
PyV8是一個可以在Python用的JS引擎。 

基本上由於我的環境是
Win8 +Python3.4
所以安裝過程中一整個不順利到不行。

以下的過程原版呈現(有一種完全可以去PO笨版的感覺)-----------------------------------------------------------------------------------------------------------------------------------

下載安裝包,需先安裝Sublime text3
--> 不知道在幹嘛 為什麼沒反應

/*
 * 這時候的我還不知道:
 * Sublime text3其實是雙環境運行
 * 分成 系統環境 跟 內建環境(裡面console就是使用這個) 
 * 至於其他的插件是可以自訂路徑,看要選用哪一種環境
 */

所以又手動安裝了


/*
 * 這時候的我還不知道:
 * 首先google釋出來,事先編譯過的只有提供到Python2.7
 * 然後是手動安裝,依稀記得一堆問題,回到當時的思緒
 */
結果還是慘敗了 各種嘗試ˊ~ˋ 決定回去土法煉鋼QQQQ

/*
 * 這時候的我:
 * 認真地考慮了轉換路線的事
 */

求完大神之後 還是決定再回鍋試試
目前的狀態:
Sublime text3 內已經安全的安裝完畢
在裡面的環境已經可以使用-->python3.3

外部使用import時,還是不能使用
-->有可能是因為原本編譯的就是給sublime使用的
-->現如經和昨天一樣 找不到_PyV8.pyd該模塊
-->CMD上嘗試 出現 ImportError: DLL load failed: 找不到指定的模組。
索性先安裝看看Boost
直接用pip install pyv8的最新只支援python2.7

/*
 * 這時候的我: 
 * 終於開始意識到win8的不友善←明明就是固執要用Python3.4
 */

pyd無法import的原因可能 :

It's typically because of one or more of the following:
  • The .pyd is not in your current path (you said it was in the same folder so that should not be the problem)
  • A DLL the .pyd depends on is not in your current path. Locate the missing DLL's using depends.exe and either copy these dll's to the same folder or add the containing directories to your system path
  • You're using a debug version of python. Then the module must be renamed from xyz.pyd to xyz_d.pyd.

-->覺得應該是版本衝突 導致無法載入
-->sublime text based on python 3.3 but I used the python3.4
WTF = = I think it needs the python33.dll.
So what's next step? QQQQQ

/*
 * 這時候的我:
 * 已經忍不住開始亂假設了,其實就是版本問題而已。
 */

-->確定是版本問題了
參考別人的其他情況

There's only dlls built for Python-2.6 in the site.
You cannot use dll built for Python2.6 in Python 2.7.
Find the dll built for your system (platform, python version should match). Or build it yourself.


-->真的需要重建照一個跟sublime text3相同的python環境
(看了一堆 問題 文章 自己的問題卻一直解不了 頭好痛ˊ~ˋ)

/*
 * 之所以是版本問題其實很明顯,
 * 畢竟在sublime下安裝得到的pyd是編譯給python3.3用的。
 */

終於那啥啥啥啥啥 太感動了!!!!
最終使用的版本: Python 3.3.5 32bit+ PyV8 win 32 p3

終於與世界相逢!

/*
 * 最後我還是屈服了
 * 在Win8底下,人還是不要太鐵齒!
 * 分分鐘的事也能搞兩天XD
 */

再不行虛擬機真的是好夥伴:

我還是覺得編譯程式碼在linux底下做會比較友善。

其他選擇:
(好像還有很多)


後記: 這一篇在實際實作的時候,是我卡最久速度進行最慢的時候,那時候一整個覺得很沮喪,記憶體也是在這時候壞的,反正就是壞事接二連三ˊ~ˋ
上一篇靜態分析BeautifulSoup    下一篇開始使用PyV8

留言

  1. 你好,看你的文章很有幫助,請問如何可以跟你多請教?
    我的line : aminwhite5168

    回覆刪除

張貼留言

熱門文章