返回

捉个掘金「野」金客,一夜进阶 Python 爬虫高手!

前端

如何利用 Python 爬取掘金文章,一夜成为爬虫高手

摘要:
本文将指导你使用 Python 爬取掘金文章,并将它们转换为 Markdown 文档。通过这个分步教程,你将了解如何获取掘金用户 ID、获取文章列表、获取文章详情、将 HTML 转换为 Markdown、下载文章图片、替换文章中的图片链接,以及保存 Markdown 为文件。

前提准备:

  • 熟练掌握 Python 编程
  • 安装 Python 库:requests、BeautifulSoup
  • 获取掘金用户 ID(可以从个人主页 URL 中获取)

步骤一:导入所需库

import requests
from bs4 import BeautifulSoup

步骤二:获取掘金文章列表

def get_article_list(user_id):
    url = f"https://juejin.cn/user/{user_id}/posts"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    article_list = soup.find_all("a", class_="title-link")
    return article_list

步骤三:获取文章详情

def get_article_detail(article_url):
    response = requests.get(article_url)
    soup = BeautifulSoup(response.text, "html.parser")
    title = soup.find("h1", class_="article-title").text
    content = soup.find("div", class_="article-content").text
    return title, content

步骤四:将 HTML 转换为 Markdown

import mistune
renderer = mistune.Markdown()
def html_to_markdown(html):
    markdown = renderer.render(html)
    return markdown

步骤五:下载文章图片

import os
def download_images(content):
    image_urls = re.findall(r'src="(.*?)"', content)
    for image_url in image_urls:
        response = requests.get(image_url)
        image_name = image_url.split("/")[-1]
        with open(image_name, "wb") as f:
            f.write(response.content)

步骤六:替换文章中的图片链接

def replace_image_links(content):
    image_urls = re.findall(r'src="(.*?)"', content)
    for image_url in image_urls:
        image_name = image_url.split("/")[-1]
        new_image_url = f"file:///{os.getcwd()}/{image_name}"
        content = content.replace(image_url, new_image_url)
    return content

步骤七:将 Markdown 保存为文件

def save_markdown(title, content):
    with open(f"{title}.md", "w") as f:
        f.write(content)

步骤八:主函数

def main():
    user_id = input("请输入掘金用户 ID:")
    article_list = get_article_list(user_id)
    for article in article_list:
        article_url = article["href"]
        title, content = get_article_detail(article_url)
        markdown = html_to_markdown(content)
        download_images(markdown)
        markdown = replace_image_links(markdown)
        save_markdown(title, markdown)

if __name__ == "__main__":
    main()

结论:

恭喜你!你现在已经是一个 Python 爬虫高手了。通过掘金用户 ID,你已经成功抓取了所有文章并将其转化为了 Markdown 文档。赶紧去分享给你的小伙伴们吧!

常见问题解答:

1. 如何确保我的代码有效?

  • 确保你已经安装了 requests 和 BeautifulSoup 库。
  • 确保你输入了一个有效的掘金用户 ID。
  • 仔细检查代码,确保没有语法错误或逻辑错误。

2. 如何更改保存 Markdown 文件的目录?

  • save_markdown 函数中,你可以修改 open(f"{title}.md", "w") as f: 行中的路径。

3. 如何将 Markdown 文档转换为 HTML?

  • 你可以使用 mistune 库中的 markdown 函数将 Markdown 转换为 HTML。

4. 如何将文章中的代码块保留为代码块?

  • 使用 mistune 库中的 code_block 函数将代码块标记为 Markdown 代码块。

5. 如何抓取文章中的评论?

  • 掘金 API 不提供评论数据,因此无法通过爬取获取文章中的评论。