ubuntu docker 搭建 chrome + python+selenium webdriver环境,实现网络数据爬虫

apt-get update
#安装python3
apt-get install python3

#查看python版本号
root@a516b463019e:/# python3 -V
Python 3.8.2
#安装python包扩展工具
apt-get install python3-pip

#查看pip版本号
root@a516b463019e:/# pip3 -V
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

#安装selenium包
pip3 install selenium
#安装chrome 浏览器
#将下载源加入到系统的源列表。
sudo wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/


wget -q -O - https://dl.google.com/linux/linux_signing_key.pub  | sudo apt-key add -

sudo apt-get update

#安装命令
sudo apt-get install google-chrome-stable

安装成功后查看浏览器版本
/usr/bin/google-chrome -version


root@a516b463019e:/# /usr/bin/google-chrome -version
Google Chrome 84.0.4147.135 


#安装浏览器对应版本驱动 chromedriver
#下载地址:http://chromedriver.storage.googleapis.com/index.html
下载84.**版本

wget http://chromedriver.storage.googleapis.com/84.0.4147.30/chromedriver_linux64.zip

#安装解压工具
apt-get install unzip
#解压
unzip chromedriver_linux64.zip

#复制到bin目录
cp chromedriver /usr/bin/chromedriver

#查看驱动版本
root@a516b463019e:~# chromedriver -version
ChromeDriver 84.0.4147.30 (48b3e868b4cc0aa7e8149519690b6f6949e110a8-refs/branch-heads/4147@{#310})

#安装火狐浏览器
#搜索安装包
apt-cache search firefox

#会出现以下两条
firefox - Safe and easy web browser from Mozilla
firefox-geckodriver - Safe and easy web browser from Mozilla - geckodriver

#安装火狐浏览器
apt-get install firefox
#安装驱动
firefox-geckodriver
新建 webdriver.py文件 写入一下内容,示例调用google浏览器,复制文本保持原有格式,以免造成python语法错误
vi webdriver.py
# -*- coding: utf-8 -*-
#!/usr/bin/python3
import io
import sys
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# print(sys.argv)
url=sys.argv[1]
if url.strip()=='':
   sys.exit(1)
# print(url)
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码

#这将使Selenium WebDriver等待直到完全加载并解析了初始HTML文档,并放弃了样式表,图像和子帧的加载。
#设置为eager时,Selenium WebDriver等待直到 DOMContentLoaded 返回事件
options = Options()
options.page_load_strategy = 'none'
options.add_argument("--no-sandbox")
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)


#最大化窗口
driver.maximize_window()


try:
   driver.get(url)
except:
   driver.close()
   driver.quit()

html_source = driver.page_source
print(html_source)
# print(driver.current_url)
# print(driver.get_cookies())

# driver.save_screenshot('./image.png')#截图

#采集完成关闭浏览器
driver.close()
driver.quit()
#通过参数执行数据抓取百度,需要抓取其他站点只需要传递url即可
python3 webdriver.py https://www.baidu.com