如何用python爬取感兴趣的各高校教师公开的教育经历和工作经历?目前已有的数据是各教师的文章、目前工作单位和姓名等。
如图所示,这是已有数据的Excel表格页面,我们需要根据这个Excel获得这上面作者的教育背景和工作经历(来源可以是其工作单位官网,也可以是维基百科等可靠数据来源。输出一个Excel表格
Excel案例如下,直接复制到Excel中就是这个样子
ISSN | 标题 | 作者 | 作者单位 | 出版时间 | 基金 |
---|---|---|---|---|---|
2095-1086 | 学前教育对儿童认知与非认知发展的影响——来自中国学前教育普及项目的证据 | 赵丽秋1;李莉2 | 1.中国人民大学劳动人事学院 2.华东师范大学经济与管理学院 | 2024-05-30 | 教育部人文社会科学研究青年基金项目(19YJC790193);国家自然科学基金青年科学基金项目(72103065)的资助; 人的发展经济学研究中心资助; |
2095-1086 | 早期父母外出务工经历对个体收入的长期影响 | 呼倩1,2;梁银鹤3;秦雪征4 | 1.中央财经大学财经研究院 2.中央财经大学北京财经研究基地 3.中央财经大学经济学院 4.北京大学经济学院 | 2024-05-30 | 国家社会科学基金青年项目(23CJY046);国家自然科学基金面上项目(72074004);国家自然科学基金青年项目(72303263);教育部人文社会科学基金青年项目(22YJC790069); 中央财经大学“新苗学者”支持计划(XMXZ2313)的资助; |
2095-1086 | 省际边界效应、区域市场分割与地方保护——基于货物运输数据的估计 | 张皓辰1;郭研2;吴群锋2 | 1.北京大学新结构经济学研究院 2.北京大学经济学院 | 2024-05-30 | 国家社会科学基金重点项目(19AJY013)的资助; |
2095-1086 | “稳就业”压力下的企业投资与创新创业 | 解咪1;申广军2;钟宁桦3 | 1.上海财经大学“上海的全球资源配置能力建设”决策咨询研究基地、国际经济合作研究院 2.中山大学岭南学院 3.同济大学经济与管理学院 | 2024-05-30 | 国家社会科学基金重大项目(19ZDA073);国家自然科学基金青年项目(72303143);国家自然科学基金面上项目(71973101、72273157);上海市哲学社会科学规划青年课题(2023EJB020);上海市教育发展基金会和上海市教育委员会“晨光计划”项目(23CGA43);“中央高校基本科研业务费专项资金”项目(2022110351)的资助; 同济大学文科创新团队培育计划; |
2095-1086 | 如何(不)实行价格歧视?——基于一般消费者分布的二维模型分析 | 帅杰1;刘其宏2 | 1.中南财经政法大学文澜学院 2.俄克拉何马大学经济系 | 2024-05-30 | 国家自然科学基金(72173135);中央高校基本科研业务费专项资金(2722023DS018、YRTD202208)资助; |
2095-1086 | 征管技术和征管意愿对纳税遵从度的影响效果——以二手房交易税收征管为例 | 李科杨1;吴璟2;毛捷1 | 1.对外经济贸易大学国际经济贸易学院 2.清华大学建设管理系、恒隆房地产研究中心 | 2024-05-30 | 国家自然科学基金青年项目(72204042)的资助;国家自然科学基金面上项目(72174100、71874093)的资助; |
目前代码如下:
import pandas as pd
import requests
from bs4 import BeautifulSoup
import re
import time
import logging
# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
input_file = 'E:/学习资料/岭院金融/RA/Python源代码/1234.xlsx'
df = pd.read_excel(input_file)
bing_search_url = "https://www.bing.com/search?q={}"
results = []
for index, row in df.iterrows():
authors = row['作者']
institution = row['作者单位']
author_names = re.split(r'[,\s;;]+', authors)
author_names = [re.sub(r'\d+$', '', name).strip() for name in author_names if name]
for author_name in author_names:
try:
search_query = f"{author_name} {institution} 教育背景 工作经历"
response = requests.get(bing_search_url.format(search_query), headers={"User-Agent": "Mozilla/5.0"})
response.raise_for_status()
soup = BeautifulSoup(response.content, 'html.parser')
found_info = False
for i, result in enumerate(soup.find_all('li', {'class': 'b_algo'}), start=1):
title = result.find('h2')
snippet = result.find('p')
if title and snippet:
info_text = snippet.get_text().strip()
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': info_text
})
found_info = True
logging.info(f'已成功爬取 {author_name} 的信息:{info_text}')
break
if i > 5:
break
if not found_info:
logging.warning(f'未找到 {author_name} 的相关信息')
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': '未找到'
})
time.sleep(2)
except requests.exceptions.HTTPError as e:
logging.error(f'HTTP错误: {e}')
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': '未找到'
})
except Exception as e:
logging.error(f'爬取 {author_name} 时出错: {e}')
results.append({
'作者': author_name,
'作者单位': institution,
'教育背景与工作经历': '出错'
})
output_df = pd.DataFrame(results)
output_file = 'E:/学习资料/岭院金融/RA/Python源代码/authors_bing_education_work_experience.xlsx'
output_df.to_excel(output_file, index=False)
logging.info(f'所有数据已保存至 {output_file}')
但输出的结果是“2024-11-04 20:29:28,041 - WARNING - 未找到 赵丽秋 的相关信息
2024-11-04 20:29:31,084 - WARNING - 未找到 李莉 的相关信息
2024-11-04 20:29:34,121 - WARNING - 未找到 呼倩 的相关信息
2024-11-04 20:29:37,260 - WARNING - 未找到 的相关信息”等,也就是什么也没爬到,