python使用selenium爬取js加密的網頁
python使用selenium爬取js加密的網頁
我們經常使用Python從網站上爬取我們喜歡的圖片,比如從煎蛋網爬取妹子圖。現在雖然煎蛋網取消了“OOXX”欄目,但是至少把名字換成了隨手拍,我今天想從該網站爬取妹子圖,去發現沒有辦法 從爬取的程式碼中找到 ‘.jpg’ 關鍵詞,這就尷尬了,我用審查元素看了一下,是有的,但是又看了一下網頁的原始碼,沒有找到,實際上我們使用Python 的下面兩句程式碼爬取到了就是網頁的原始碼,而不一定是審查元素的全部內容。
response = urllib.request.urlopen(url)
html = response.read()
這是為什麼呢,以前沒有出現這樣的問題啊,以前我們發現審查元素和原始碼是一樣的啊。
其實,這是因為現在很多網站為了拒絕爬蟲,居然對網頁進行了加密,操蛋。
但是呢,我們也是有對策的,現在的網站基本上都是採用 js 加密,Python 也是有模組可以破解它的。
具體程式碼呼叫如下:
from selenium import webdriver
chrome = webdriver.Chrome()
chrome.get(url)
html = chrome.page_source
return html #返回的就是字串
但是在用之前,還是有幾個問題需要注意的:
1.安裝谷歌瀏覽器
是個人都會的操作吧,我就不說廢話了。至於為什麼要安裝谷歌瀏覽器,自己看看程式碼裡的 chrome ,應該就明白了吧。
2.安裝 selenium
這是必須的操作步驟,very easy。
開啟 CMD,輸入下面的語句,Enter
pip install selenium
上面的語句當然是最簡單了了,但是畢竟我們是中國人,速度慢,你懂得。國內也有映象網站啊。
嘻嘻:(一般人我不告訴他)
pip install -i http://pypi.douban.com/simple --trusted-host pypi.douban.com selenium
3.chromedriver' executable needs to be in PATH
大部分的人在完成第一步之後,執行程式,都是會彈出“chromedriver' executable needs to be in PATH”的錯誤的。這是因為 這個模組使用的是谷歌瀏覽器。然後需要一個 chromedriver。
首先,第一步,根據你自己的Chrome(谷歌瀏覽器)版本,下載相應的 chromedriver。
怎麼檢視谷歌瀏覽器的版本號呢?還是自行百度吧,太弱智的問題了。(實在不會的們可以看一下下面的第二步)
chromedriver 下載地址:
http://chromedriver.storage.googleapis.com/index.html
我的谷歌瀏覽器版本是 70.0.3538.67,就下載win32的版本(Windows只有這一個版本,我是64位的電腦,完全沒問題。)
第二步,將chromedriver.exe複製到Chrome瀏覽器安裝目錄
下載zip包之後,將其解壓。發現裡面僅有一個chromedriver.exe檔案,該檔案不需要通過嚮導模式安裝在電腦上,而是僅需放到Chrome瀏覽器安裝目錄下面。可以通過360軟體找到谷歌瀏覽器的安裝位置:
如下圖,我的Chrome瀏覽器安裝在C:\Users\Xii\AppData\Local\Google\Chrome\Application目錄,將解壓後的chromedriver.exe驅動檔案複製到該目錄下即可。(這裡也是可以看到版本號的)
第三步:將Chromedriver.exe複製到python根目錄!!
如果是直接安裝Python的朋友,就是在這個位置:如 C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32
我是使用Anaconda3 安裝的Python,直接放在Anaconda3的根目錄下就可以了(D:\ProgramFiles\Anaconda3)
第四步: 將瀏覽器環境變數新增到path
開啟開始選單->我的電腦(或計算機)->系統屬性->高階系統設定->環境變數,編輯使用者變數裡的path,
把谷歌瀏覽器的安裝位置加進去:
新增 :C:\Users\Xi\AppData\Local\Google\Chrome\Application
修改完之後點選確定按鈕儲存配置。
4、測試
重啟Python,再次執行發現未報錯