python如何截长图_selenium定时爬取长截图

Python + selenium + windows定时任务 实现定时每日定时长截图

首先下载一个chromdriver插件(插件下载地址:http://chromedriver.storage.googleapis.com/index.html ),之后在小黑窗(win+r)输入cmd,回车,打开黑窗口之后pip install selenium (-i https://pypi.tuna.tsinghua.edu.cn/simple some-package)如果卡就加上清华源

普通截图直接使用save_screenshot即可。这里为了实现长截图,需要使用无头浏览(headless)实现。

代码如下

# -*- coding: utf-8 -*-

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

import os

import time

def get_image(url, filename):

#chromedriver的路径

chromedriver = r"D:\python\chromedriver.exe"

os.environ["webdriver.chrome.driver"] = chromedriver

#设置chrome测试开启的模式为headless(无头浏览)

chrome_options = Options()

chrome_options.add_argument('headless')

driver = webdriver.Chrome(chromedriver,chrome_options=chrome_options)

driver.maximize_window() #窗口最大化

#控制浏览器写入并转到链接

driver.get(url)

time.sleep(1)

#根据scroll获取页面的宽高,可以根据浏览模式,需要选择下面三种方案

width = driver.execute_script("return document.documentElement.scrollWidth")

height = driver.execute_script("return document.documentElement.scrollHeight")

#根据offset获取可见区域大小

# width = driver.execute_script("return document.body.offsetWidth")

# height = driver.execute_script("return document.body.offsetHeight")

# #获取网页可见区域大小

# width = driver.execute_script("return document.body.clientWidth")

# height = driver.execute_script("return document.body.clientHeight")

print(width,height)

#这里使用xpath获取页面元素,也可以使用其他方法。这里设置点击事件是为了截取某些页面时本身自动点击了某个元素,会导致截图变暗,如果没有这类问题不用加点击事件。具体描述看下图

xpath1 = driver.find_element_by_xpath("//div[@class='sale-btn']/i[@class='iconfont iconarrow-up']")

xpath1.click()

#将浏览器的宽高设置成上面获取的宽高

driver.set_window_size(width, height)

time.sleep(1)

#截图并关掉浏览器

driver.save_screenshot(filename)

driver.close()

#上面是封装的函数,下面是需要输入的参数

#要保存图片的路径(选择一个文件夹)

os.chdir(r'D:/。。。/。。。。/')

#要截取的网页

url = 'https://www.xxx.cn/'

#以时间格式命名的图片名,不加replace会无法保存,因为%X时间格式:冒号无法命名

pic_name = time.strftime("%Y-%m-%d-%X").replace(':',".") + '_xxx网站截图' + '.png'

# 调用函数

get_image(url, filename)

a9ae3249657d9ba3f58d6047b09c320f.png

6d1f17fd9b35ad7b446a6ad8b0036c2e.png

区别就是不加click是下面这种,点击取消这个折扣显示,就是上面正常我们想要的结果。

此时代码部分就结束了。接下来要设置定时任务

windows中自带定时任务管理程序

找到此电脑,右击打开属性

会出现这个界面

33a6e9288eeeaf7cbd6b0e7421012b75.png

点击任务计划程序,在右侧点击创建基本任务

6076ab029fa000397800a1f011d4bd49.png

名称和描述自己写,下一步看自己需求选择任务开始时间,下一步设置执行时间,下一步默认启动程序,下一步

420a1b3027673f8ad1facb2d4141c2d3.png

“程序和脚本”浏览的是Python解释器的名称,一般就是python.exe

“起始于“文本框中填的是Python解释器的目录,例如“D:\Python37\python.exe”

“添加参数“文本框中填的是你要运行的Python程序的完整路径例如“D:\爬虫\长截图.py”.这里一定要是.py。不要.ipynb格式的文件。py类型的文件里面就是上面的代码,最好把注释去掉只保留代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值