mdpi_journal.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
MDPI 期刊信息获取脚本
"""
import argparse
import requests
from bs4 import BeautifulSoup
def get_journal_info(journal_name):
"""
获取期刊详细信息
Args:
journal_name: 期刊名称(如 sensors, energies 等)
Returns:
期刊详细信息
"""
url = f"https://www.mdpi.com/journal/{journal_name}"
try:
response = requests.get(url)
response.raise_for_status()
soup = BeautifulSoup(response.text, 'html.parser')
# 提取期刊名称
title_elem = soup.find('h1', class_='journal-title')
title = title_elem.text.strip() if title_elem else "No title"
# 提取期刊描述
desc_elem = soup.find('div', class_='journal-description')
description = desc_elem.text.strip() if desc_elem else "No description"
# 提取影响因子
impact_elem = soup.find('div', class_='impact-factor')
impact_factor = impact_elem.text.strip() if impact_elem else "No impact factor"
# 提取主编信息
editor_elem = soup.find('div', class_='editor-in-chief')
editor = editor_elem.text.strip() if editor_elem else "No editor info"
# 提取期刊主页链接
home_elem = soup.find('a', class_='journal-home')
home_link = home_elem['href'] if home_elem else url
return {
"name": title,
"description": description,
"impact_factor": impact_factor,
"editor_in_chief": editor,
"home_link": home_link,
"url": url
}
except requests.exceptions.RequestException as e:
print(f"获取期刊信息失败: {e}")
return None
def main():
parser = argparse.ArgumentParser(description="获取 MDPI 期刊详细信息")
parser.add_argument("journal", help="期刊名称(如 sensors, energies 等)")
args = parser.parse_args()
print(f"获取期刊信息: {args.journal}")
info = get_journal_info(args.journal)
if info:
print(f"\n期刊名称: {info['name']}")
print(f"\n期刊描述:\n{info['description']}")
print(f"\n影响因子: {info['impact_factor']}")
print(f"\n主编: {info['editor_in_chief']}")
print(f"\n主页链接: {info['home_link']}")
print(f"\n期刊页面: {info['url']}")
else:
print("未能获取期刊详细信息")
if __name__ == "__main__":
main()