20260311 221449 Calendar

20260311_221449_calendar.md

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()