ALEXA1003 2024-11-04 19:50 采纳率: 0%
浏览 39
已结题

如何用Python爬取各高校教师公开的教育和工作经历

如何用python爬取感兴趣的各高校教师公开的教育经历和工作经历?目前已有的数据是各教师的文章、目前工作单位和姓名等。
如图所示,这是已有数据的Excel表格页面,我们需要根据这个Excel获得这上面作者的教育背景和工作经历(来源可以是其工作单位官网,也可以是维基百科等可靠数据来源。输出一个Excel表格

Excel案例如下,直接复制到Excel中就是这个样子

ISSN标题作者作者单位出版时间基金
2095-1086学前教育对儿童认知与非认知发展的影响——来自中国学前教育普及项目的证据赵丽秋1;李莉21.中国人民大学劳动人事学院 2.华东师范大学经济与管理学院2024-05-30教育部人文社会科学研究青年基金项目(19YJC790193);国家自然科学基金青年科学基金项目(72103065)的资助; 人的发展经济学研究中心资助;
2095-1086早期父母外出务工经历对个体收入的长期影响呼倩1,2;梁银鹤3;秦雪征41.中央财经大学财经研究院 2.中央财经大学北京财经研究基地 3.中央财经大学经济学院 4.北京大学经济学院2024-05-30国家社会科学基金青年项目(23CJY046);国家自然科学基金面上项目(72074004);国家自然科学基金青年项目(72303263);教育部人文社会科学基金青年项目(22YJC790069); 中央财经大学“新苗学者”支持计划(XMXZ2313)的资助;
2095-1086省际边界效应、区域市场分割与地方保护——基于货物运输数据的估计张皓辰1;郭研2;吴群锋21.北京大学新结构经济学研究院 2.北京大学经济学院2024-05-30国家社会科学基金重点项目(19AJY013)的资助;
2095-1086“稳就业”压力下的企业投资与创新创业解咪1;申广军2;钟宁桦31.上海财经大学“上海的全球资源配置能力建设”决策咨询研究基地、国际经济合作研究院 2.中山大学岭南学院 3.同济大学经济与管理学院2024-05-30国家社会科学基金重大项目(19ZDA073);国家自然科学基金青年项目(72303143);国家自然科学基金面上项目(71973101、72273157);上海市哲学社会科学规划青年课题(2023EJB020);上海市教育发展基金会和上海市教育委员会“晨光计划”项目(23CGA43);“中央高校基本科研业务费专项资金”项目(2022110351)的资助; 同济大学文科创新团队培育计划;
2095-1086如何(不)实行价格歧视?——基于一般消费者分布的二维模型分析帅杰1;刘其宏21.中南财经政法大学文澜学院 2.俄克拉何马大学经济系2024-05-30国家自然科学基金(72173135);中央高校基本科研业务费专项资金(2722023DS018、YRTD202208)资助;
2095-1086征管技术和征管意愿对纳税遵从度的影响效果——以二手房交易税收征管为例李科杨1;吴璟2;毛捷11.对外经济贸易大学国际经济贸易学院 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 - 未找到 的相关信息”等,也就是什么也没爬到,

  • 写回答

29条回答 默认 最新

  • 专家-皆知 2024-11-04 20:11
    关注
    获得0.15元问题酬金

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    为了使用PYTHON获取指定高校的教师教育和工作经历,我们可以按照以下步骤进行:

    1. 导入必要的库: 在开始之前,确保已经安装了REQUESTS库来发送HTTP请求。如果没有安装,可以通过PIP安装:

      PIP INSTALL REQUESTS
      
    2. 读取EXCEL文件: 从提供的EXCEL文件中读取数据,并将其转换为适合PYTHON处理的数据结构。

    3. 设置请求头: 使用HEADERS参数在发送的HTTP请求前添加一些额外的信息以增强安全性或提高速度。例如,可以设置一个基本的USER-AGENT头,或者使用更高级的头部(如ACCEPT-ENCODING: GZIP, DEFLATE; Q=0.8;)。

    4. 发送HTTP请求: 使用REQUESTS库发送POST请求到目标URL。这里是一个示例请求示例:

      IMPORT REQUESTS
      
      URL = "HTTPS://EXAMPLE.COM/API/TEACHERS"
      HEADERS = {
          'CONTENT-TYPE': 'APPLICATION/JSON',
          'USER-AGENT': 'MOZILLA/5.0 (WINDOWS NT 10.0; WIN64; X64) APPLEWEBKIT/537.36 (KHTML, LIKE GECKO) CHROME/58.0.3029.110 SAFARI/537.3'
      }
      
      DATA = {"SCHOOL": "某高校", "EXPERIENCE": ["教授", "讲师", "助理研究员"]}
      
      RESPONSE = REQUESTS.POST(URL, HEADERS=HEADERS, JSON=DATA)
      
      IF RESPONSE.STATUS_CODE == 200:
          PRINT("SUCCESS!")
      ELSE:
          PRINT(F"ERROR: {RESPONSE.TEXT}")
      
    5. 解析响应内容: 发送的HTTP响应可能包含JSON格式的数据。将返回值解析成PYTHON字典类型。

    6. 处理结果: 对于每个教师记录,提取所需信息(文章、当前工作单位和姓名)。你可以根据需要修改上述代码以适应你的具体需求。

    7. 输出结果: 根据获取到的教师数据,你可以进一步分析这些信息,比如统计特定教师的教育经历数量或分析不同教育经历的比例。

    请注意,这段代码仅适用于PYTHON环境,且可能不适用所有浏览器。此外,你需要确保你有相应的权限访问目标网站并能够执行安全操作。如果你需要在实际项目中实现此功能,建议咨询专业程序员或查阅相关的编程教程。

    评论

报告相同问题?

问题事件

  • 系统已结题 11月12日
  • 修改了问题 11月5日
  • 创建了问题 11月4日

悬赏问题

  • ¥15 帮我调试idea基于spring boot项目
  • ¥15 es 7.17.20版本生成时间戳
  • ¥15 wpf dategrid表头排序图标自定义
  • ¥15 分析下图所示同步时序逻辑电路的逻辑功能。
  • ¥15 halcon联合c#遇到了问题不能解决
  • ¥15 xshell无法连接提示ssh服务器拒绝密码
  • ¥15 AT89C52单片机C语言关于串口通信的位操作
  • ¥20 需要步骤截图(标签-服务器|关键词-map)
  • ¥50 gki vendor hook
  • ¥15 灰狼算法和蚁群算法如何结合