CentOS7 安装python3.7.8并运行爬虫程序
须知:我们教学使用的是centOS7中默认自带了一个python环境,但是2.7版本的,而我们教学过程使用的却是3.7.8
centOS8自带的python环境是python3
一、linux中安装python3.7.8
1. 查看默认的python2.7的安装目录
[root@master ~]# cd /usr/bin
[root@master bin]# ll python*
lrwxrwxrwx. 1 root root 7 1月 9 11:04 python -> python2
lrwxrwxrwx. 1 root root 9 1月 9 11:04 python2 -> python2.7
-rwxr-xr-x. 1 root root 7144 4月 2 2020 python2.7
[root@master bin]#
三个显示结果中最后一个是python2.7,实际上这几个文件之间是存在软链接的依赖关系,类似于windows中的超链接。
我们可以看到,python指向的是python2,python2指向的是python2.7,因此我们可以装个python3.7.8,然后将python指向python3.7.8,然后python2指向python2.7,那么两个版本的python就能共存了。
2. 下载相关依赖包
在之前学习过程中知道python创始人是基于C语言编写的解释器,所以我们安装的时候需要对下载的包先进行编译,才能安装。但是centOS7中有些依赖是没有的,所以我们需要先使用yum命令进行安装。
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
我们要安装版本3.7.8,首先要把刚才显示的三个python文件中的第一个python给备份一下(不保留源文件,仅保留备份文件就可以)
[root@master bin] mv python python.bak
python文件变成了python.bak文件,让它不生效。
3. 下载python包
官方网址:https://www.python.org/ftp/python/
找到python3.7.8版本,不要在windows中下载
将url进行一个拼接:https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz
切换目录,创建下载包的位置文件夹
[root@master bin]# cd /usr/local/soft/
[root@master soft]# ll
总用量 186420
drwxr-xr-x. 8 root root 206 1月 10 15:35 bigdata22
drwxr-xr-x. 2 root root 35 1月 10 09:57 bigdata22test
drwxr-xr-x. 8 10 143 255 3月 29 2018 jdk1.8.0_171
-rw-r--r--. 1 root root 190890122 1月 9 16:12 jdk-8u171-linux-x64.tar.gz
[root@master soft]# cd bigdata22
[root@master bigdata22]# cd ..
[root@master soft]# ll
总用量 186420
drwxr-xr-x. 8 root root 206 1月 10 15:35 bigdata22
drwxr-xr-x. 2 root root 35 1月 10 09:57 bigdata22test
drwxr-xr-x. 8 10 143 255 3月 29 2018 jdk1.8.0_171
-rw-r--r--. 1 root root 190890122 1月 9 16:12 jdk-8u171-linux-x64.tar.gz
[root@master soft]# mkdir python378
[root@master soft]# cd python378/
[root@master python378]# pwd
/usr/local/soft/python378
进入/usr/local/soft/python378目录进行下载:(wget命令我们之前下载过)
wget https://www.python.org/ftp/python/3.7.8/Python-3.7.8.tgz
使用tar解压命令进行
[root@master python378]# tar -zxvf Python-3.7.8.tgz
cd 进入到解压后的目录中
指定python的安装目录,这样的话,里面的一些bin目录、lib目录就都会存放在这个目录下面。如果不指定这个安装目录的话,最后python的安装文件将分散到linux的默认目录,不在一块。我们指定安装目录,以后卸载的话直接删除目录就可以干净卸载了。
[root@master Python-3.7.8]# ./configure --prefix=/usr/local/soft/python378-install-dir
指定好后,当前目录下,进行编译
[root@master Python-3.7.8]# make
编译好之后进行安装,安装的位置为我们指定的位置:/usr/local/soft/python378-install-dir
[root@master Python-3.7.8]# make install
执行完后我们指定的安装目录就有了
切换回/usr/bin目录,创建软链接
ln -s /usr/local/soft/python378-install-dir/bin/python3 /usr/bin/python
查看一下当前的python版本
输入python进入,然后写代码:
[root@master soft]# python
Python 3.7.8 (default, Jan 11 2023, 22:43:08)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> print("hello world")
hello world
>>> exit()
[root@master soft]#
安装pip
前提:因为我们将python的软链接改为了python3.7.8,而系统内部等像yum还是依赖python2.7的,所以我们需要改两个文件让yum依然用原来的2.7版本
a. /usr/bin/yum
b. /usr/libexec/urlgrabber-ext-down
将上面两个文件第一行进行修改:
#!/usr/bin/python-------> #!/usr/bin/python2.7
先下载epel扩展源
yum -y install epel-release
安装pip(多试几次)
yum install -y python3-pip
配置下阿里镜像源加速
/root/.pip/pip.conf(手动创建.pip目录,pip.conf文件)
添加以下内容:
[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
创建软链接
ln /usr/local/soft/python378-install-dir/bin/pip3 /usr/bin/pip
下载numpy,pandas,requests,selenium==3.0.2
二、centOS7中使用selenium模块进行自动化爬虫
1. 安装chrome
yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
第一次可能会失败,多试几次
2. 安装一些依赖的库
yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts
3. 安装 chromedriver
wget http://npm.taobao.org/mirrors/chromedriver/2.41/chromedriver_linux64.zip
4. 将下载的文件解压,放在如下位置
[root@master soft]# unzip chromedriver_linux64.zip
-bash: unzip: 未找到命令
[root@master soft]# yum install unzip
[root@master soft]# unzip chromedriver_linux64.zip
Archive: chromedriver_linux64.zip
inflating: chromedriver
[root@master soft]# mv chromedriver /usr/bin/
三、在linux中使用自动化爬取数据
因为在linux中是没有图形化界面的,不支持可视化,所以要设置一些配置
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在的报错
chrome_options.add_argument('window-size=1920x3000') # 指定浏览器分辨率
chrome_options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度
chrome_options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
# 创建浏览器对象
driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', chrome_options=chrome_options) # executable_path:浏览器驱动路径