写在前面
想很简单,做很难,坚持更难,克服惰性。每天学一点,不会的就少一点。
养成习惯很重要,先从点赞开始吧!关注[程序员之道],前行道路不再迷茫!
不知道你有没有碰到过在开发过程中需要爬取网页,或者截取网页内容。这时候我们的selenium就要大显身手了!
准备工作
什么是无头浏览器呢,就是没有用户图形界面的Web浏览器,可以方便的通过程序进行控制或模拟用户的网页访问行为。这不就是天然为自动化测试准备的嘛。
下载无头浏览器驱动
可以根据自己的Chrome版本选择合适的无头浏览器驱动版本。一般来说,版本相近即可。
比如我的Chrome版本:
驱动存储
将下载的驱动存储到自己的目录,比如/Users/Desktop/soft/chromedriver
代码实现
代码实现的主要逻辑非常简单。
- 设置无头浏览器驱动路径及参数。
- 获取网页内容。
- 执行script脚本,设置最大宽度及高度(如果没有此步骤,截图只是一部分)。
- 保存图片。
具体代码实现:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
path = r'/Users/Desktop/soft/chromedriver'
def download(url, pngName):
# 设置chrome驱动的路径及参数
browser = webdriver.Chrome(executable_path=path,chrome_options=chrome_options)
# 获取网页内容
browser.get(url)
# 通过执行脚本,设置滚动条到最大宽度及最大高度
width = browser.execute_script("return document.documentElement.scrollWidth")
height = browser.execute_script("return document.documentElement.scrollHeight")
browser.set_window_size(width, height)
# 是否需要超时等待
# time.sleep(10)
# 保存的截图名字
browser.save_screenshot(pngName)
browser.quit()
if __name__ == '__main__':
url = 'https://www.w3school.com.cn/'
pngPath = '/Users/Desktop/PycharmProjects/python-learn/image/'
pngName = pngPath + "w3school.png"
download(url, pngName)