如何用Python和Pandas逐行解析并导出网页圣经内容?
解决方案
首先确保你已经安装所需依赖:
pip install requests beautifulsoup4 pandas
下面是修改后的完整代码,可单独提取章节标题、每节经文并按要求导出CSV:
import requests from bs4 import BeautifulSoup import pandas as pd # 目标URL url = "https://www.bibliaonline.com.br/ara/mt/1" # 获取页面内容 response = requests.get(url) response.encoding = 'utf-8' # 确保编码正确,避免乱码 soup = BeautifulSoup(response.text, 'html.parser') # 提取章节标题(若页面结构变动,需右键检查元素调整标签/类名) chapter_title = soup.find('h2', class_='chapter-title').get_text(strip=True) # 提取所有经文条目 verses = soup.find_all('p', class_='verse') # 构造数据列表:标题单独一行,每节经文各一行 data = [] # 添加章节标题记录 data.append({"内容": chapter_title, "类型": "章节标题"}) # 添加每节经文记录 for verse in verses: verse_text = verse.get_text(strip=True) data.append({"内容": verse_text, "类型": "经文"}) # 转成DataFrame并导出CSV df = pd.DataFrame(data) df.to_csv("biblia_mateus_capitulo1.csv", index=False, encoding='utf-8-sig') print("导出完成,文件已保存为 biblia_mateus_capitulo1.csv")
关键修改说明:
- 拆分记录:不再把所有内容合并,而是将章节标题、每节经文分别作为独立条目存入列表,确保CSV每行对应一条记录
- 编码处理:用
utf-8-sig编码导出,避免中文乱码问题 - 类型标记:新增"类型"字段,方便区分标题和经文(可根据需求删除)
注意事项:
- 如果网站有反爬限制,需给
requests.get添加请求头,示例:headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"} response = requests.get(url, headers=headers) - 若页面结构更新,需重新检查元素的标签或类名,调整
find/find_all的参数
内容的提问来源于stack exchange,提问作者Heitor Rocha
相关产品推荐
相关产品推荐

