使用selenium+谷歌浏览器在centeos7无GUI部署爬虫cookie更新
Posted lyxdw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用selenium+谷歌浏览器在centeos7无GUI部署爬虫cookie更新相关的知识,希望对你有一定的参考价值。
环境安装
python3 安装selenium
pip3 install selenium
安装chrome浏览器+chromedriver驱动
一.配置yum源
1.在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repo
vi /etc/yum.repos.d/google-chrome.repo
2.写入如下代码:
[google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch enabled=1 gpgcheck=1 gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
使用vi在命令行编辑:(详细参考https://blog.csdn.net/u013142781/article/details/50735470)
按下a键使用insert功能来添加修改文件
修改完成后按下ESC键进入末行模式 然后输入 :q保存 :wq保存退出
二.安装google chrome浏览器
yum update #更新yum源 yum -y install google-chrome-stable #安装
Google官方源可能在中国无法使用,导致安装失败或者在国内无法更新,可以添加以下参数来安装:
yum -y install google-chrome-stable --nogpgcheck
三.添加软连接
注意:源文件删除后软连接无法使用 ls查看
which google-chrome-stable #寻找chrome路径 ln -s 路径 /bin/chrome #查询到的路径 添加软连接
四.下载chromedriver驱动
https://chromedriver.storage.googleapis.com/index.html?
下载对应版本的驱动(两个都下载最新的应该没问题),对应表参考:(版本不兼容会出现下面类似的报错)
ChromeDriver v2.43 (2018-10-16)----------Supports Chrome v69-71 ChromeDriver v2.42 (2018-09-13)----------Supports Chrome v68-70 ChromeDriver v2.41 (2018-07-27)----------Supports Chrome v67-69 ChromeDriver v2.40 (2018-06-07)----------Supports Chrome v66-68 ChromeDriver v2.39 (2018-05-30)----------Supports Chrome v66-68 ChromeDriver v2.38 (2018-04-17)----------Supports Chrome v65-67 ChromeDriver v2.37 (2018-03-16)----------Supports Chrome v64-66 ChromeDriver v2.36 (2018-03-02)----------Supports Chrome v63-65 ChromeDriver v2.35 (2018-01-10)----------Supports Chrome v62-64
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: call function result missing ‘value‘ (Session info: chrome=65.0.3325.31) (Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d9023f),platform=Windows NT 6.1.7601 SP1 x86) (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 0 milliseconds
使用xftp复制下载好的文件到服务器执行如下代码:
chmod +x chromedriver #增加可执行权限 #移动文件到该路径 sudo mv -f chromedriver /usr/local/share/chromedriver #添加软连接(链接存在会报错,直接跳过即可) sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
注意:
对于root用户不能运行chrome
编辑启动文件: /opt/google/chrome/google-chrome 将最后一行改写为: exec -a "$0" "$HERE/chrome" "[email protected]" --no-sandbox $HOME
因为我这里用的是无界面显示,所以就不装Xvfb,pyvirtualdisplay了
到这里环境安装完毕
下面附上获取网站cookie的代码(模拟登陆什么的自己研究吧,我这里就给个获取cookie的示例)
#centeos 携程cookie更新 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.chrome.options import Options import pymysql options = webdriver.ChromeOptions() options.add_argument(‘--headless‘)#无界面 driver = webdriver.Chrome(executable_path="chromedriver",chrome_options=options) url = "https://www.ly.com/iflight/flight-book1.aspx?para=0*SHA*MLE*2019-10-10**YSCF*1*0*1&advanced=false&orgAirCode=false&desAirCode=false" wait = WebDriverWait(driver,10)#10s等待响应 try: #发生错误结束浏览器,防止占用资源,导致服务器崩溃(也可以在程序开头添加os模块检测chrome进程,每次运行先杀死) driver.get(url) message = driver.get_cookies() #获取当前页面的cookie l = "" for i in message: name = i["name"] + ‘=‘ + i["value"] + ‘;‘ l = l + name print(l) driver.quit() except: driver.quit()
添加linux定时任务定时更新cookie:
crontab -e #编辑定时任务 crontab -l #查看定时任务
#下面给出几个例子 #每天凌晨30分更新 30 0 * * * python3 /root/global_spider2/global_cn/all_global.py #每3个小时更新 * */3 * * * python3 /root//国内外机票cookie更新/domestic_cookie.py #每2个小时更新一次 * */2 * * * python3 /root/国内外机票cookie更新/china_ctrip.py
更多有关于定时任务的操作 https://www.cnblogs.com/zoulongbin/p/6187238.html
以上是关于使用selenium+谷歌浏览器在centeos7无GUI部署爬虫cookie更新的主要内容,如果未能解决你的问题,请参考以下文章
webdirver.Chrom() selenium webdirver调用谷歌浏览器的问题解决
Java当中使用 Selenium 使其 ChromeDriver 控制谷歌浏览器向下不断的滑动到最低部