如何用Python抓取讲师信息表格并将值列转为CSV行?
提取讲师信息值列并转为行写入CSV
现有代码及运行结果
用户编写的Python代码如下:
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager import pandas as pd from bs4 import BeautifulSoup driver = webdriver.Chrome(ChromeDriverManager().install()) url = "https://uin-suka.ac.id/id/page/detil_dosen/197606110000002301" driver.get(url) soup = BeautifulSoup(driver.page_source, 'lxml') df = pd.read_html(str(soup))[0] print(df)
运行后输出:
0 1 2 0 Nama : Dr. Nina Mariani Noor, SS., MA. 1 Program Studi : Interdisciplinary Islamic Studies 2 Fakultas : Pascasarjana 3 Jenis Pegawai | Status : Pegawai Tetap BLU | Aktif Mengajar 4 Jabatan Akademik | Golongan : Lektor | III/C 5 Email : - 6 Pendidikan Terakhir : S3 Process finished with exit code 0
解决方案
要将索引为2的列(值列)提取为行写入CSV,只需重新构造DataFrame调整数据结构,修改后的完整代码如下:
修改后的代码
from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager import pandas as pd from bs4 import BeautifulSoup driver = webdriver.Chrome(ChromeDriverManager().install()) url = "https://uin-suka.ac.id/id/page/detil_dosen/197606110000002301" driver.get(url) soup = BeautifulSoup(driver.page_source, 'lxml') # 读取页面表格数据 df = pd.read_html(str(soup))[0] # 用原表格第0列的字段名做表头,第2列的值做单行数据,构造新DataFrame cleaned_df = pd.DataFrame([df[2].tolist()], columns=df[0].tolist()) # 导出CSV,关闭行索引并指定UTF-8编码避免乱码 cleaned_df.to_csv('dosen_details.csv', index=False, encoding='utf-8') # 打印处理后的结果 print(cleaned_df) # 关闭浏览器释放资源 driver.quit()
关键逻辑说明
df[0].tolist():提取原表格第0列的字段名(如Nama、Program Studi)作为新CSV的列标题df[2].tolist():提取原表格第2列的所有值,作为新DataFrame的单行数据to_csv参数:index=False移除自动生成的行索引,encoding='utf-8'确保非ASCII字符正常显示
运行后生成的CSV会以字段名为列、讲师信息为单行数据的格式保存。
内容的提问来源于stack exchange,提问作者Agung
相关产品推荐
相关产品推荐

