linux centos7 关于Python模拟浏览器踩坑(转载)

https://cloud.tencent.com/developer/article/1404558

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、腾讯云服务器

2、Linux VM_0_10_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

待运行python脚本:

from selenium import webdriver

option = webdriver.ChromeOptions()
option.add_argument(‘headless’)
browser = webdriver.Chrome(chrome_options=option)

browser.get(‘http://www.baidu.com/’)
print(browser.title)
exit();
安装详细过程:

cd /usr/local/share
wget -N http://chromedriver.storage.googleapis.com/2.26/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
ln -s /usr/local/share/chromedriver /usr/bin/chromedriver

yum install python-pip

pip install selenium
执行,python脚本,报错:

[root@VM_0_10_centos pythonproj]# python webdriver.py
Traceback (most recent call last):
File “webdriver.py”, line 3, in
browser = webdriver.Chrome()
File “/usr/lib/python2.7/site-packages/selenium/webdriver/chrome/webdriver.py”, line 73, in init
self.service.start()
File “/usr/lib/python2.7/site-packages/selenium/webdriver/common/service.py”, line 98, in start
self.assert_process_still_running()
File “/usr/lib/python2.7/site-packages/selenium/webdriver/common/service.py”, line 111, in assert_process_still_running
% (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127
手动查看 chromedriver 版本

[root@VM_0_10_centos pythonproj]# chromedriver --version
chromedriver: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory
安装chrome浏览器:

yum install chromium
执行,还是报错:

[root@VM_0_10_centos ~]# chromedriver
chromedriver: error while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory
搜索,发现这个so文件问题,是少了这个库GConf2,http://landcareweb.com/questions/25967/que-shao-gong-xiang-ku-libgconf-2-so-4

安装这个库:

yum install GConf2
再执行 webdriver,搞定!

[root@VM_0_10_centos ~]# chromedriver
Starting ChromeDriver 2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac) on port 9515
Only local connections are allowed.
再执行pathon脚本,报错:

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac),platform=Linux 3.10.0-514.26.2.el7.x86_64 x86_64)
查看版本问题:

[root@VM_0_10_centos pythonproj]# yum list installed | grep chro
chromium.x86_64 71.0.3578.98-2.el7 @epel
[root@VM_0_10_centos pythonproj]# chromedriver --version
ChromeDriver 2.26.436382 (70eb799287ce4c2208441fc057053a5b07ceabac)
好像是版本不一致的问题,看这个:https://www.jianshu.com/p/40027de48c5b

ChromeDriver的版本太低了,跟安装的浏览器版本搭不上。

重新安装下 ChromeDriver版本 :v2.45

cd /usr/local/share
wget -N http://chromedriver.storage.googleapis.com/2.45/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
再执行脚本,依旧报错:

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn’t exist)
(The process started from chrome location /usr/bin/chromium-browser is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
(Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 3.10.0-514.26.2.el7.x86_64 x86_64)
不过,这次错误明显好很多。

搜一下,找到解决办法:https://github.com/heroku/heroku-buildpack-google-chrome/issues/46

Don’t think it’s has a heroku issue. Had a similar issue with docker container as well. Here is my fix that worked in docker -

`
chrome_options = Options()
chrome_options.add_argument(’–headless’)
chrome_options.add_argument(’–no-sandbox’)
chrome_options.add_argument(’–disable-dev-shm-usage’)
driver = webdriver.Chrome(’/path/to/your_chrome_driver_dir/chromedriver’,chrome_options=chrome_options)
修改python脚本如下:

from selenium import webdriver

option = webdriver.ChromeOptions()
option.add_argument(‘headless’)
option.add_argument(‘no-sandbox’)
option.add_argument(‘disable-dev-shm-usage’)
browser = webdriver.Chrome(’/usr/local/bin/chromedriver’,chrome_options=option)

browser.get(‘http://www.baidu.com/’)
print(browser.title)
exit();
再执行,成功!

运行一段时候后,又报错:

selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn’t exist
(Driver info: chromedriver=2.45.615279 (12b89733300bd268cff3b78fc76cb8f3a7cc44e5),platform=Linux 3.10.0-514.26.2.el7.x86_64 x86_64)
查看进程:

[root@VM_0_10_centos ~]#
[root@VM_0_10_centos ~]#
[root@VM_0_10_centos ~]# ps -ef | grep chrome
root 2947 1 0 12:51 ? 00:00:00 /usr/local/bin/chromedriver --port=40245
root 3615 1 0 12:55 ? 00:00:00 /usr/local/bin/chromedriver --port=45273
root 5809 1 0 13:10 pts/0 00:00:01 /usr/local/bin/chromedriver --port=44337
root 8637 5268 0 13:30 pts/0 00:00:00 grep --color=auto chrome
root 21378 1 0 11:11 ? 00:00:01 /usr/local/bin/chromedriver --port=47677
root 25024 1 0 Mar18 ? 00:00:00 /usr/local/bin/chromedriver --port=38096
root 25346 1 0 Mar18 ? 00:00:00 /usr/local/bin/chromedriver --port=42048
[root@VM_0_10_centos ~]#
[root@VM_0_10_centos ~]#
[root@VM_0_10_centos ~]# killall chromedriver
[root@VM_0_10_centos ~]# ps -ef | grep chrome
root 8674 5268 0 13:31 pts/0 00:00:00 grep --color=auto chrome
不知道是不是这影响,,,代码里面没有browser.quit(),如上,kill chromedriver 掉再试试。

还是报错,继续查,

[root@VM_0_10_centos ~]# ps -ef | grep driver
root 2956 1 0 12:51 ? 00:00:02 /usr/bin/chromium-browser --enable-plugins --enable-extensions --enable-user-scripts --enable-printing --enable-gpu-rasterization --enable-sync --auto-ssl-client-auth --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-dev-shm-usage --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtrials=SiteIsolationExtensions/Control --headless --ignore-certificate-errors --load-extension=/tmp/.org.chromium.Chromium.dteWvh/internal --log-level=0 --metrics-recording-only --no-first-run --no-sandbox --password-store=basic --remote-debugging-port=0 --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.org.chromium.Chromium.tOyVfN data:,
… 一大堆这个进程
[root@VM_0_10_centos ~]# killall chromium-browser
再重试,好了。

[root@VM_0_10_centos ~]# killall chromedriver
[root@VM_0_10_centos ~]# killall chromium-browser
[root@VM_0_10_centos ~]#
[root@VM_0_10_centos ~]#
[root@VM_0_10_centos ~]# ps -ef | grep chro
root 13735 13285 0 14:08 pts/0 00:00:00 grep --color=auto chro
脚本退出时,一定要主动调用 driver.quit !!!

修改脚本:

from selenium import webdriver

option = webdriver.ChromeOptions()
option.add_argument(‘headless’)
option.add_argument(‘no-sandbox’)
option.add_argument(‘disable-dev-shm-usage’)
browser = webdriver.Chrome(’/usr/local/bin/chromedriver’,chrome_options=option)

browser.get(‘http://www.baidu.com/’)
print(browser.title)
browser.quit() # 这个一定要加。加了就没上面的问题了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以按照以下步骤来在Linux CentOS 7上下载Python 3.7: 1. 首先,你可以使用以下命令来检查当前CentOS系统上安装的Python版本:`python -V` [1]。这将显示当前Python的版本号。 2. 接下来,你需要打开`/usr/local`目录。你可以使用 `cd /usr/local` 命令来进入这个目录。 3. 然后,你可以使用以下命令来下载Python 3.7的安装包: ``` wget https://www.python.org/ftp/python/3.7.10/Python-3.7.10.tgz ``` 。这个命令将会从Python官方网站下载Python 3.7的压缩包。 4. 最后,你可以按照Python官方网站上的指示,解压缩和安装Python 3.7。具体的安装步骤可能会因版本而异,所以请确保在安装之前仔细阅读官方文档。 希望以上步骤可以帮助你在CentOS 7上下载Python 3.7。如果你遇到任何问题,请随时向我提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Linux(CentOS7)下载并安装Python 3教程及创建虚拟环境](https://blog.csdn.net/weixin_43335288/article/details/126558329)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux Centos7安装python3.7和安装pykmip](https://blog.csdn.net/fen_fen/article/details/123520752)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值