请你帮我写一段代码,实现这样的需求: 1. 接收一个 URL 作为输入 2. 获取这个 URL 的网页,并且通过 readability 这个库提取网页里的正文内容 3. 将正文内容调用 OpenAI 的 API 做一个 Summarize
以下是一段使用Python编写的示例代码,以完成你的需求。这段代码主要使用了requests
、BeautifulSoup
、readability
和openai
库。由于你想要使用OpenAI的API做一个Summarize,我写的代码使用了OpenAI的GPT-3模型。请注意,你需要在使用OpenAI API之前设置你的OpenAI API密钥。如果你没有密钥,你需要去OpenAI的官网申请。
在运行下面的代码之前,确保已经安装了所有必需的库。你可以使用pip install
命令进行安装。
pythonCopy codeimport requests
from bs4 import BeautifulSoup
from readability import Document
import openai
# 确保在使用OpenAI API之前设置你的OpenAI API密钥
openai.api_key = 'your-api-key'
def summarize_web_content(url):
response = requests.get(url)
doc = Document(response.text)
content = doc.summary()
# 使用 BeautifulSoup 去除 HTML 标签,仅提取纯文本
soup = BeautifulSoup(content, features="html.parser")
content_text = soup.get_text()
# 使用OpenAI的GPT-3模型生成摘要
result = openai.Completion.create(
engine="text-davinci-002",
prompt=content_text[:2048],
temperature=0.3,
max_tokens=150
)
return result.choices[0].text.strip()
# 示例用法
url = "http://example.com"
summary = summarize_web_content(url)
print(summary)
注意,这段代码仅作为示例,并可能需要根据实际使用场景进行调整。例如,你可能需要处理网络请求失败、HTML解析失败、OpenAI API请求失败等可能出现的错误情况。同时,因为OpenAI的GPT-3模型的prompt长度限制是2048个token,所以如果网页内容非常长,可能需要使用其他方法截取或分段处理。
ImportError: cannot import name 'Document' from 'readability' (/Users/huangjiabao/GitHub/SourceCode/MacBookPro16-Code/PythonCoder/venv/lib/python3.11/site-packages/readability/__init__.py)
根据你给出的错误信息,看来你可能安装的是一个名为readability
的库,但这并不是我们想要的库。我们想要的是readability-lxml
库,它包含Document
这个我们需要的类。
在Python中,有一些库的名字可能会相似,或者说有时会有多个库具有相同的名字,但它们可能由不同的开发者开发,功能也可能不同。
为了解决这个问题,你可以试试以下的步骤:
- 卸载当前的
readability
库:在你的命令行中输入pip uninstall readability
- 安装
readability-lxml
库:在你的命令行中输入pip install readability-lxml
完成上述步骤后,你应该就可以导入并使用Document
了。