URL = “https://www.msn.cn/zh-cn/lifestyle/calendar”
COOKIE_BUTTON_SELECTOR = “button:has-text(‘接受’)”
# Cookie接受按钮选择器
TARGET_ELEMENT_SELECTOR = “.calendar-section-container” # 目标元素选择器
SCREENSHOT_WIDTH = 1920 # 截图宽度
SCREENSHOT_HEIGHT = 1080 # 截图高度
with sync_playwright() as p:
# 启动浏览器(Chromium示例)
browser = p.chromium.launch(headless=True) # 调试时可关闭无头模式
context = browser.new_context()
page = context.new_page()
try:
# 设置大尺寸视口模拟最大化
page.set_viewport_size({"width": SCREENSHOT_WIDTH, "height": SCREENSHOT_HEIGHT})
# 访问目标页面
page.goto(URL, timeout=60000)
print("页面加载完成")
date_str = get_current_date_str()
# 处理Cookie弹窗
try:
page.click(COOKIE_BUTTON_SELECTOR, timeout=5000)
print("已点击接受Cookie按钮")
except Exception as e:
print(f"未找到Cookie按钮或处理失败: {e}")
# 等待目标元素加载
element = page.wait_for_selector(TARGET_ELEMENT_SELECTOR, timeout=15000)
# 滚动到元素确保可见
element.scroll_into_view_if_needed()
# 生成唯一文件名
timestamp = int(time.time())
filename = f"calendar_section_{date_str}.png"
# 对指定元素截图
element.screenshot(path=f"calendar\{filename}")
print(f"截图已保存至: {filename}")
finally:
# 确保关闭浏览器
context.close()
browser.close()
print("操作完成")
=======================
URL = "https://weather.cma.cn/web/weather/58946.html"
TARGET_ELEMENT_SELECTOR_1 = "body > div.container > div:nth-child(2) > div > div" # 目标元素选择器
TARGET_ELEMENT_SELECTOR_2 = "body > div.container > div.row.mt15 > div.col-xs-9 > div:nth-child(1)" # 目标元素选择器
SCREENSHOT_WIDTH = 1920 # 截图宽度
SCREENSHOT_HEIGHT = 1080 # 截图高度
with sync_playwright() as p:
# 启动浏览器(Chromium示例)
browser = p.chromium.launch(headless=True) # 调试时可关闭无头模式
context = browser.new_context()
page = context.new_page()
try:
# 设置大尺寸视口模拟最大化
page.set_viewport_size({"width": SCREENSHOT_WIDTH, "height": SCREENSHOT_HEIGHT})
# 访问目标页面
page.goto(URL, timeout=60000)
print("页面加载完成")
date_str = get_current_date_str()
# 等待目标元素加载
element = page.wait_for_selector(TARGET_ELEMENT_SELECTOR_1, timeout=15000)
# 滚动到元素确保可见
element.scroll_into_view_if_needed()
# 生成唯一文件名
timestamp = int(time.time())
image_name_1 = time.strftime('%Y-%m-%d') + '-1'
filename_1 = r"D:\docs\tianqi\%s.png" % image_name_1
element.screenshot(path=filename_1)
# 等待目标元素加载
element = page.wait_for_selector(TARGET_ELEMENT_SELECTOR_2, timeout=15000)
# 滚动到元素确保可见
element.scroll_into_view_if_needed()
# 生成唯一文件名
timestamp = int(time.time())
image_name_2 = time.strftime('%Y-%m-%d') + '-2'
filename_2 = r"D:\docs\tianqi\%s.png" % image_name_2
print(filename_1)
print(filename_2)
# 对指定元素截图
#pa = "D:\docs\calendar\" + filename
element.screenshot(path=filename_2)
print(f"截图已保存至: {filename_1}")
img = Image.open("d:/docs/tianqi/%s.png" % image_name_1)
newimg = img.resize((870,245))
newimg.save(("d:/docs/tianqi/%s.png" % image_name_1))
img1 = Image.open("d:/docs/tianqi/%s.png" % image_name_1)
size1 = img1.size
img2 = Image.open("d:/docs/tianqi/%s.png" % image_name_2)
size2 = img2.size
joint = Image.new("RGB", (size1[0], size1[1]+size2[1]))
loc1, loc2 = (0, 0), (0, size1[1])
joint.paste(img1, loc1)
joint.paste(img2, loc2)
image_name = time.strftime('%Y-%m-%d')
joint.save("d:/docs/tianqi/pt-%s.png" % image_name)
finally:
# 确保关闭浏览器
context.close()
browser.close()