爬虫工作中, 难免会遇到时间紧迫而且网站有一定的反爬虫措施,这时候就需要用到selenium+chrome+chromedriver来进行数据抓取。
假如项目需要放到linux服务器上,就需要在服务器搭建相应的环境。
1,需要chrome浏览器;2,需要浏览器驱动chromedriver;(我python环境)
一,安装chrome[参考]
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
然后执行下面的命令安装 chrome 需要的依赖包
yum install libX11 libXcursor libXdamage libXext libXcomposite libXi libXrandr gtk3 libappindicator-gtk3 xdg-utils libXScrnSaver liberation-fonts
然后执行命令安装 chrome
rpm -ivh google-chrome-stable_current_x86_64.rpm
完成后执行下面的命令查看版本
google-chrome --version
如下图,看一下我们安装的chrome版本,好选择对应版本的chromedriver
二,下载chromedriver[chromedriver下载地址]
上面图片显示我当前版本 86.0.4240.111
到 http://npm.taobao.org/mirrors/chromedriver/ 寻找86版的chromedriver,如图
下载好之后,上传到服务器,路径可以自定义选择;
还可以添加到环境变量中,这样就不用在程序中创建driver的时候指定chromedriver的路径了。
我的代码如下
# -*- encoding:utf-8 -*-
import platform
from selenium import webdriver
def chromeBrowser(driver_path=None, headless=True, img_load_if=True):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--no-sandbox') # 禁用沙箱【不加在liunx下会报错】
chrome_options.add_argument('--disable-extensions') # 禁用扩展插件
chrome_options.add_argument("prxoy-server=11.11.11.11:0000") # 添加代理
if headless: # 启用无界面模式
chrome_options.add_argument("--headless")
prefs = {
'profile.default_content_setting_values': {
'images': 2, # 禁止加载图片
'javascript': 2 # 禁止加载js
}
}
if not img_load_if: # 禁止图片加载,提高页面加载速度
chrome_options.add_experimental_option('prefs', prefs)
if not driver_path:
if "windows" in platform.system().lower():
driver_path = "E:\chromedrivers\chromedriver.exe"
elif "linux" in platform.system().lower():
driver_path = "/usr/bin/chromedriver"
driver = webdriver.Chrome(
executable_path=driver_path,
chrome_options=chrome_options
)
driver.maximize_window() # 设置窗口最大化
return driver
if __name__ == "__main__":
driver = chromeBrowser()
driver.get("https://www.baidu.com/")
print(driver.page_source)