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

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

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

      爬取博客園 collection 下的文章

      ? 完整代碼(保存為 spider.py

      #!/usr/bin/env python3
      # -*- coding: utf-8 -*-
      import os
      import re
      import time
      import requests
      import html2text
      from bs4 import BeautifulSoup
      from tqdm import tqdm
      from urllib.parse import urljoin, urlparse
      
      BASE_URL = "http://www.rzrgm.cn/xxx/collections/11111"
      HEADERS = {
          "User-Agent": ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                         "AppleWebKit/537.36 (KHTML, like Gecko) "
                         "Chrome/123 Safari/537.36")
      }
      SAVE_DIR = "blog"
      IMG_DIR = os.path.join(SAVE_DIR, "images")
      os.makedirs(IMG_DIR, exist_ok=True)
      
      h = html2text.HTML2Text()
      h.ignore_links = False
      h.wrap_links = False
      h.mark_code = True
      
      # ------------------ utils ------------------
      def safe_name(title: str) -> str:
          return re.sub(r'[\\/:*?"<>|]', '_', title) or "untitled"
      
      def fetch(url: str) -> str:
          resp = requests.get(url, headers=HEADERS, timeout=15)
          resp.raise_for_status()
          resp.encoding = resp.apparent_encoding
          return resp.text
      
      def download_img(src: str) -> str:
          if src.startswith("http://"):
              src = "https:" + src
          fname = os.path.basename(urlparse(src).path) or "img"
          local_path = os.path.join(IMG_DIR, fname)
          if not os.path.exists(local_path):
              try:
                  data = requests.get(src, headers=HEADERS, timeout=15).content
                  with open(local_path, "wb") as f:
                      f.write(data)
              except Exception as e:
                  print(f"?? 圖片下載失敗: {src} ({e})")
                  return src  # fallback
          return os.path.relpath(local_path, SAVE_DIR)
      
      # ------------------ main logic ------------------
      def collect_links():
          html = fetch(BASE_URL)
          soup = BeautifulSoup(html, "lxml")
          links = []
          for idx, a in enumerate(soup.select("a.entrylistItemTitle"), 1):
              title = a.get_text(strip=True)
              href = a["href"]
              if not href.startswith("http"):
                  href = urljoin(BASE_URL, href)
              links.append((f"{idx:03d}", title, href))
          return links
      
      def post2md(prefix: str, title: str, url: str):
          html = fetch(url)
          soup = BeautifulSoup(html, "lxml")
          body = soup.find("div", id="cnblogs_post_body") or soup
      
          # 本地化圖片
          for img in body.select("img"):
              src = img.get("src")
              if src:
                  img["src"] = download_img(src)
      
          md_body = h.handle(str(body))
          meta = f"原文:<{url}>\n\n---\n\n"
          filename = f"{prefix}_{safe_name(title)}.md"
          with open(os.path.join(SAVE_DIR, filename), "w", encoding="utf-8") as f:
              f.write(meta + md_body)
      
      def main():
          links = collect_links()
          print(f"?? 共發現 {len(links)} 篇文章")
          for prefix, title, url in tqdm(links, desc="?? 下載"):
              outfile = os.path.join(SAVE_DIR, f"{prefix}_{safe_name(title)}.md")
              if os.path.exists(outfile):
                  continue
              try:
                  post2md(prefix, title, url)
                  time.sleep(1)
              except Exception as e:
                  tqdm.write(f"? 失敗 {url} - {e}")
          print(f"? 全部完成!文件保存在 → {os.path.abspath(SAVE_DIR)}")
      
      if __name__ == "__main__":
          main()
      

      ? 使用方法

      1. 安裝依賴:

        pip install requests beautifulsoup4 html2text tqdm
        
      2. 運行腳本:

        python spider.py
        

      ? 輸出示例

      blog/
      ├── 001_ aaa.md
      ├── 002_ bbb.md
      ├── 003_ ccc.md
      └── images/
          ├── kkksc01.png
          ├── kkksc02.png
          └── kkksc03.png
      
      posted @ 2025-07-16 16:55  愛玩游戲的jason  閱讀(8)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品久久一区二区三区| 国产精品国产亚洲区久久| 妇女性内射冈站hdwww000| 亚洲熟妇中文字幕五十路| 汕尾市| 成人又黄又爽又色的视频| 欧美熟妇乱子伦XX视频| 国产一卡2卡3卡4卡网站精品| 国产成人高清精品免费软件| 久久久久亚洲av成人网址| 性欧美乱熟妇xxxx白浆| 亚洲日韩精品一区二区三区| 国产成人精品久久一区二区| 国产国拍亚洲精品永久软件| 国产成人精品亚洲资源| 欧美成人精品手机在线| 四虎国产精品成人免费久久| 亚洲色欲在线播放一区| 国产伦精品一区二区三区| 日韩国产精品区一区二区| 亚洲人成电影在线天堂色| 精品 日韩 国产 欧美 视频| 成人av专区精品无码国产| 欧美丰满熟妇乱XXXXX网站| 久久精品国产亚洲av高| 国产第一页浮力影院入口| 亚洲国产午夜精品福利| 国产超高清麻豆精品传媒麻豆精品 | 日韩精品亚洲专区在线观看| 国产午夜精品福利视频| 日产精品99久久久久久| 国产偷人妻精品一区二区在线| 国内精品伊人久久久久影院对白| 后入内射无码人妻一区| 国产99视频精品免费视频76| 一区二区视频| 国产成人综合色视频精品| 国产av亚洲一区二区| 久久青草国产精品一区| 欧美性猛交xxxx免费看| √天堂中文www官网在线|