📜  python 上一个答案 - Python (1)

📅  最后修改于: 2023-12-03 14:46:11.724000             🧑  作者: Mango

Python 上一个答案 - Python

简介

“Python 上一个答案”是一个简单的 Python 程序,其目的是获取 Stack Overflow 上一个与特定标签相关的问题的答案。它使用 Stack Exchange API 来搜索问题,并使用BeautifulSoup库解析HTML页面以获取答案。用户可以指定标签和所需答案的数量。

环境要求

该程序适用于 Python 3.x,操作系统无关。

以下 Python 库是必需的:

  • requests
  • BeautifulSoup

这些可以通过 pip 安装。

使用方法
  1. 从 GitHub 下载程序的源代码。 https://github.com/example/python-last-answer

  2. 打开终端(Linux或Mac)或命令提示符(Windows)。

  3. 在 Shell 中切换到程序源代码所在的目录。

  4. 运行以下命令:

    $ python lastanswer.py python 3
    

    注意,最后两个参数是标签和所需答案的数量。

  5. 程序将从 Stack Overflow 搜索 Python 标签中的问题,并返回最近的 3 个答案。

以下是代码片段:

import requests
from bs4 import BeautifulSoup

url = "https://api.stackexchange.com/2.2/questions"
params = {
    "order": "desc",
    "sort": "activity",
    "tagged": tag,
    "site": "stackoverflow",
    "filter": "withbody"
}

response = requests.get(url, params=params)
data = response.json()

questions = data["items"]
if len(questions) == 0:
    return "No questions found."

answer_links = []
for question in questions:
    soup = BeautifulSoup(question["body"], "html.parser")
    question_links = soup.find_all("a", href=True)

    for link in question_links:
        if "stackoverflow.com/questions" in link["href"]:
            answer_links.append(link["href"] + "#"+ str(question["accepted_answer_id"]))

answer_links = list(set(answer_links))[:count]

answers = []
for link in answer_links:
    response = requests.get(link)
    soup = BeautifulSoup(response.content, "html.parser")
    answer = soup.find("div", {"class": "accepted-answer"})
    answers.append(str(answer))

return "\n\n---\n\n".join(answers)
结论

“Python 上一个答案”是一个简单的 Python 程序,它可以从 Stack Overflow 上找到与给定标签相关的问题,并返回最近的答案。可以使用此程序作为“休闲时间习题”,或用这个程序来获得技术支持。