最近,由於公司需要做爬蟲抓取一些新聞,在開發過程中,發現有些網站有一定的反爬措施,通過瀏覽器訪問一切正常,通過其他方式,包括:curl,urlconnection 等,就算加入了cookie,agent等參數也不能完全正常訪問,導致爬取失敗。
經過網上查找資料,找到解決方案,
對於這種特殊的網站,爬取方式改為通過程序在服務器端打開瀏覽器,訪問地址,然后解析入庫。
過程中需要用到chrome瀏覽器和chromedriver來實現
其中,chrome瀏覽器支持無界面訪問網站,chromedriver,提供java,python,php等語言調用chrome的能力。
現將安裝過程記錄如下(基於centos6.5,centos7.2 親測成功):
一、安裝chrome
1. 下載安裝腳本,
在下載目錄中,執行以下命令,將安裝腳本下載到本地
wget https://intoli.com/install-google-chrome.sh
2.然后授予可執行權限
chmod 755 ./install-google-chrome.sh
3.執行腳本
./install-google-chrome.sh
安裝腳本會自動下載、安裝chrome(合適的版本),並且目前兩個系統中,所缺少的依賴,都會被安裝。
4.測試安裝結果
執行命令, google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/
如果在當前文件夾中出現screenshot.png 則安裝成功
二、安裝chromedriver
1.切換到 chrome安裝路徑 (個人習慣,實際上在什么目錄都可以)
cd /opt/google/
2.下載文件包
wget https://npm.taobao.org/mirrors/chromedriver/75.0.3770.90/chromedriver_linux64.zip
3.解壓文件包
unzip chromedriver_linux64.zip
解壓后,在/opt/google/ 會多出一個文件chromedriver
4.連接文件
ln -s /opt/google/chromedriver /usr/bin/chromedriver
執行以上命令后,安裝成功
如果文件下載失敗,可以下載傳上服務器
地址是
https://files.cnblogs.com/files/suntray/install-google-chrome.sh.zip (安裝腳本)
https://files.cnblogs.com/files/suntray/chromedriver_linux64.zip (驅動文件)