悠悠楠杉
网站页面
确保你的Python环境中安装了以下库:
- pandoc
(用于Markdown转换)
- BeautifulSoup4
(用于解析和格式化HTML)
- lxml
(作为BeautifulSoup4
的解析器)
可以使用pip安装:
bash
pip install beautifulsoup4 lxml
```python
import BeautifulSoup as bs
from bs4.element import Tag
from bs4.formatter import HTMLFormatter
import pypandoc
content):
# 解析HTML内容
soup = bs.BeautifulSoup(htmlcontent, 'lxml')
# 提取标题、关键词、描述和正文
title = soup.find('h1') # 标题通常为<h1>标签
keywords = soup.find_all('meta', attrs={'name': 'keywords'}) # 假设关键词在<meta>标签中定义,name="keywords"
description = soup.find('meta', attrs={'name': 'description'}) # 描述在<meta>标签中定义,name="description"
body = soup.find_all(True, recursive=False)[1:] # 正文是第一个<div>到最后一个<div>之间的内容,除去标题标签
# 格式化正文的Markdown表示(如果需要)
formatted_body = ''.join([str(b) for b in body]) # 转换成字符串并去除标签,只保留文本内容
formatted_body = '\n'.join(formatted_body.split('\n')[1:]) # 去除首行空白(假设第一行是多余的)
formatted_body = formatted_body.strip() # 去除前后空白字符
formatted_body = pypandoc.convert_text(formatted_body, 'markdown', 'html') # 转换HTML到Markdown
# 生成Markdown格式的输出文本
markdown_content = f"# {title.text}\n" \
f"## 关键词\n{', '.join([k.get('content') for k in keywords])}\n" \
f"## 描述\n{description.get('content')}\n" \
f"\n{formatted_body}" \
f"\n---\n\n来源: 自定义生成\n" # 添加一个分隔线和来源说明
return markdown_content
```
这段代码首先解析HTML内容,然后提取出标题、关键词、描述和正文,将正文转换为Markdown格式,最后将这些元素组合成一个完整的Markdown文章。你可以根据需要调整HTML到Markdown的转换细节,比如添加额外的格式化选项等。