<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      不為別的,只為做一個連自己都羨慕的人

      python實現網頁轉為pdf

      簡單記錄一下,避免以后將代碼丟失

      from selenium import webdriver
      from selenium.webdriver.chrome.options import Options
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support.wait import WebDriverWait
      
      # pdf下載
      def save_webpage_as_pdf(url, output_path="webpage.pdf"):
          chrome_options = Options()
          chrome_options.add_argument("--headless=new")
          chrome_options.add_argument("--disable-gpu")
          chrome_options.add_argument("--no-sandbox")
          chrome_options.add_argument("--disable-dev-shm-usage")
      
          driver = webdriver.Chrome(options=chrome_options)
          driver.get(url)
      
          try:
              WebDriverWait(driver, 15).until(
                  EC.presence_of_element_located((By.ID, "js_content"))
              )
          except Exception as e:
              print("加載內容超時或發生錯誤:", e)
      
          # 1. 取消懶加載
          driver.execute_script("""
              const images = document.querySelectorAll('img');
              images.forEach(img => {
                  if(img.hasAttribute('data-src')) {
                      img.src = img.getAttribute('data-src');
                  }
                  if(img.hasAttribute('data-srcset')) {
                      img.srcset = img.getAttribute('data-srcset');
                  }
                  img.loading = 'eager';  // 強制立即加載
              });
          """)
      
          time.sleep(2)  # 適當等待
      
          # 2. 模擬滾動,強制觸發懶加載機制
          scroll_height = driver.execute_script("return document.body.scrollHeight")
          for i in range(0, scroll_height, 300):
              driver.execute_script(f"window.scrollTo(0, {i});")
              time.sleep(0.2)  # 給圖片加載時間
      
          # 滾到頁面底部
          driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
          time.sleep(3)  # 等待最后圖片加載
      
          # 3. 確認圖片是否真的加載(所有圖片都必須完成)
          images_not_loaded = driver.execute_script("""
              const imgs = Array.from(document.images);
              return imgs.filter(img => !img.complete || img.naturalHeight === 0).length;
          """)
          if images_not_loaded > 0:
              print(f"有 {images_not_loaded} 張圖片仍未加載,等待3秒重試...")
              time.sleep(3)  # 再等等
          else:
              print("所有圖片已加載完畢。")
      
          # 4. 計算PDF高度
          paper_height = driver.execute_script("return document.body.scrollHeight / 96")
      
          result = driver.execute_cdp_cmd("Page.printToPDF", {
              "printBackground": True,
              "paperWidth": 8.27,
              "paperHeight": paper_height,
              "marginTop": 0,
              "marginBottom": 0,
              "marginLeft": 0,
              "marginRight": 0,
          })
      
          pdf_data = base64.b64decode(result['data'])
          with open(output_path, "wb") as f:
              f.write(pdf_data)
              print(f"網頁已保存為 PDF:{output_path}")
      
          driver.quit()

       

      posted @ 2025-06-30 14:32  升級打怪  閱讀(76)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品国产一区二区亚洲人| 亚洲一区二区中文字幕| 亚洲av综合色区无码专区| 国产 浪潮av性色四虎| 网友偷拍视频一区二区三区| 日本边添边摸边做边爱| 成全高清在线播放电视剧| 亚洲国产精品综合一区二区| 欧美videosdesexo吹潮| 免费A级毛片无码A∨蜜芽试看| 人妻少妇精品视频二区 | 国产精品自在拍首页视频| 无码天堂va亚洲va在线va| WWW丫丫国产成人精品| 国产一区二区在线观看粉嫩| 男人添女人下部高潮视频| 周宁县| 极品少妇无套内射视频| 国产高清在线男人的天堂| 亚洲午夜福利精品无码不卡| 国产一区二区三区精品综合| 激情五月天一区二区三区| 久久99热精品这里久久精品| 亚洲av日韩av综合在线观看| 男人天堂亚洲天堂女人天堂| 欧美人与禽2o2o性论交| 无码人妻一区二区三区av| 久久精品国产99久久6| 久青草视频在线观看免费| 亚洲中文无码永久免费| 人妻无码∧V一区二区| 国产精品高清视亚洲中文| 精品综合久久久久久97| 久久96热在精品国产高清| 国产精品国产三级国产试看| 人妻久久久一区二区三区| 国99久9在线 | 免费| 国产成人精品av| 国产久久热这里只有精品| 国产精品亚洲二区亚瑟| 中文字幕热久久久久久久|