使用Linux服务器爬取网站并截图

使用Linux服务器爬取网站并截图

一、安装chrome及chromedriver

具体实现方法请参考我的另一篇博客Chrome 浏览器及Chromedriver在AlmaLinux的安装

二、代码

from selenium import webdriver
# 配置谷歌浏览器静默启动【后台启动】
chrome_options = webdriver.ChromeOptions()
# 初始化谷歌浏览器的配置【必须加上】
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=chrome_options)

driver.get("https://www.baidu.com/")

driver.save_screenshot('screenshot2.png')
driver.quit()
print("截图成功。")

截图结果如下:
在这里插入图片描述
关于用Python如何实现网页自动截图功能的代码参考的是这篇博客:
用Python如何实现网页自动截图功能?

遇到问题

在我正确安装完浏览器及其驱动后运行代码一直报错:
在这里插入图片描述
我以为是代码没有配置好,后来发现是服务器没办法显示浏览器的问题,要设置一下,关键就是这几行代码

chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')

参考解决方案的链接是selenium centos7 Chrome failed to start: exited abnormally错误解决方法

然后在设置函数webdriver.Chrome()的参数时,遇到了新旧版本参数不一致的问题,
很多博客的selenium是3,会使用chrome_options,chrome_options,这样会报错,因为在4中,这两个参数已经被弃用
selenium4中使用的是参数options和service,可以使用以下代码指定谷歌(chrome)目录和驱动(chromedirver)目录

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

# 创建 Options 选项对象
opt = Options()
opt.binary_location = r'F:\Chrome\Application\chrome.exe'	# 指定 Chrome 浏览器的路径

# 创建 Service 对象
ser = Service()	
ser.executable_path = r'F:\Chrome\chromedriver\chromedriver.exe'	# 指定 ChromeDriver 的路径

# 初始化 WebDriver,使用之前创建的 Options 和 Service 对象
driver = webdriver.Chrome(options=opt, service=ser)

# 打开网页
driver.get('http://www.baidu.com')

# 关闭浏览器
driver.quit()

参考链接:selenium4 指定谷歌(chrome)目录和驱动(chromedirver)目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值