ubuntu selenium爬虫部署

Ubuntu python部署selenium(踩坑日记)

菜鸟的配置过程

下载selenium

#更新源
sudo apt-get update
#pip3安装(ubuntu自带python但是没有安装pip)
sudo apt install python3-pip
#安装selenium
pip install selenium

下载chrome和chromedriver

webdriver下载网站

http://chromedriver.storage.googleapis.com/index.html

chrome下载网站

https://www.chromedownloads.net/chrome64win-stable/

随便选择一个版本号对应的下载即可

将chrome下载文件中的deb格式安装(rpm包舍弃)

#更新源
sudo apt-get update
#安装谷歌
sudo dpkg -i google-chrome-stable_current_amd64.deb
#报错安装谷歌依赖重复第二步
sudo apt-get -f install 

将chromedriver加入环境

mv chromedriver /usr/local/bin/
chmod 777 /usr/local/bin/chromedriver

查看chrome的版本

google-chrome --version

查看chromedriver的版本

终端输入
chromedriver

查看两个版本相同即可

代码部分

踩坑1 :

​ 加入代码以root用户运行

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

踩坑2:

​ 无头运行

chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

踩坑3

​ 无头模式需要设置游览器大小,如果太小的游览器则一些元素定位不到

browser = webdriver.Chrome(options=chrome_options)
browser.set_window_size(2000, 2000)
browser.maximize_window()

踩坑4

​ 无法使用下xpath方法定位元素(有木有大佬告诉我一下是什么原因)

#导入新版本查找定位的包
from selenium.webdriver.common.by import By
#使用傻傻的方式定位
browser.find_elements(By.CLASS_NAME, 'fine-font')[12].click()

踩坑5

​ crontab定时启动selenium脚本时,需要把环境变量以绝对路径传入

#新版本导入路径 需导入包
from selenium.webdriver.chrome.service import Service
service=Service('/root/python_pro/chromedriver')
省略
browser = webdriver.Chrome(service=service,options=chrome_options)

踩坑6

等待sleep 云服务器带宽低 请延长等待时间

#跳转新页面 在implicitly_wait后加入sleep强制延时
#因为有些网站异步加载
browser.implicitly_wait(5)
time.sleep(5)

踩坑7

implicitly_wait只需声明一次 整个driver生命周期都可以使用

额外

建议使用Firefox配合selenium,chrome无头模式非常龟速
火狐游览器下载链接
http://releases.mozilla.org/pub/firefox/releases/
火狐驱动
https://github.com/mozilla/geckodriver/releases/tag/v0.31.0
使用方法与chrome一致

你可能感兴趣的:(ubuntu,selenium,python,爬虫)