爬取 院士名单以及简介

Posted 英飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬取 院士名单以及简介相关的知识,希望对你有一定的参考价值。

爬取 院士名单以及简介

续作 人才及研究方向信息爬取爬虫 - 英飞 - 博客园 (cnblogs.com)

需求与思路

需求 : 爬取经济管理相关国家级人才

思路:

1 从title出发,比如中国科学院网站 查看不同学部中院士的介绍

具体步骤

1 中国工程院院士 和 中国科学院院士 官网

全体院士名单----中国科学院学部与院士 (cas.cn)

中国工程院 (cae.cn)

2 打开中国工程院院士 工程管理学部 名单

中国工程院 (cae.cn)

定位对应元素

body > div.mdbg > div > div.right_md > div > div.right_md_ysmd > div:nth-child(2)

3 点击跳转

姓名

body > div.mdbg_w > div > div.right_md_name

个人介绍

定位元素

body > div.mdbg_w > div > div.right_name_big.clearfix > div.intro

代码实现

# -*- coding: utf-8 -*-

"""
@author     : zuti
@software   : PyCharm
@file       : pahcong.py
@time       : 2023/3/25 10:30
@desc       :

"""
import pandas as pd
from requests_html import HTMLSession


gcys_url = "https://www.cae.cn/cae/html/main/col53/column_53_xb9.html"
headers = 
    \'user-agent\': \'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36\',
    \'Content-Type\': \'application/json;charset=UTF-8\'


# 1.创建session对象
session = HTMLSession()
# 2.发送请求
resp = session.get(url=gcys_url, headers=headers,verify=False)
# 3.在页面中查找
"""总的院士名单  https://www.cae.cn/cae/html/main/col48/column_48_1.html"""
# s0 = \'body > div.mdbg > div > div.right_md > div > div.right_md_ysmd > div:nth-child(5)\'
# s1 = \'body > div.mdbg > div > div.right_md > div > div.right_md_ysmd > div:nth-child(7)\'
# ys_link_list = []
# for i in range(5,40,2):
#     s0 = \'body > div.mdbg > div > div.right_md > div > div.right_md_ysmd > div:nth-child(\'+str(i)+\')\'
#     print(s0)
#     ys_list_0 = resp.html.find(selector=s0)
#     ys_link_list_0 = ys_list_0[0].absolute_links
#     ys_link_list.extend(ys_link_list_0)



ys_link_list = []
#管理院士名单
s0 =\'body > div.mdbg > div > div.right_md > div > div.right_md_ysmd > div:nth-child(2)\'
ys_list_0 = resp.html.find(selector=s0)
ys_link_list_0 = ys_list_0[0].absolute_links
#

#资深管理院士名单
#s0 =\'body > div.mdbg > div > div.right_md > div > div.right_md_ysmd > div:nth-child(4)\'
# ys_list_1 = resp.html.find(selector=s1)
# ys_link_list_1 = ys_list_1[0].absolute_links
#
#
ys_link_list.extend(ys_link_list_0)
# ys_link_list.extend(ys_link_list_1)
#print(ys_link_list)


dict_guanli =  #保存所有的工程管理学部院士
for l in ys_link_list:

    #进入个人页面
    session2 = HTMLSession()
    resp_l = session2.get(url=l, headers=headers, verify=False)

    #获取人才名
    n = \'body > div.mdbg_w > div > div.right_md_name\'
    name =  resp_l.html.find(selector=n)
    name_text = name[0].full_text


    # 获取个人介绍
    i = \'body > div.mdbg_w > div > div.right_name_big.clearfix > div.intro\'
    intro = resp_l.html.find(selector=i)
    intro_text = intro[0].text

    dict_guanli[name_text] = intro_text
    session2.close()

session.close()

#将字典保存为excel

# 写入excel
pf=pd.DataFrame()
pf[\'姓名\'] = list(dict_guanli.keys())
pf[\'简介\'] = list(dict_guanli.values())
file_path=pd.ExcelWriter(\'cae_guanli_zishen.xlsx\')
# file_csv_path = pd.read_csv("compound.csv")
# 替换空单元格
pf.fillna(\' \', inplace=True)

# 输出
pf.to_excel(file_path, encoding=\'utf-8\', index=False)
# pf.to_csv(file_csv_path, encoding=\'utf-8\', index=False)
# 保存表格
file_path.save()


效果展示

扩展思路

1 可以爬取所有院士

2 院士简介含有研究方向 出生地点 和 出生时间 以及当选时间 可以做一波数据分析 ,来看一下那个省份和年龄的院士最多

以上是关于爬取 院士名单以及简介的主要内容,如果未能解决你的问题,请参考以下文章

用 Python 爬取「奔跑吧」全系列嘉宾名单,并进行可视化分析

Python利用urllib模块+正则表达式并利用BeautifulSoup模块进行内容解析,爬取院士信息

杨强入选加拿大皇家科学院院士!此外还有3名华人学者入选

沈向洋王海峰候选中国工程院院士!计算机领域7位入围增选

爬取豆瓣的tp250电影名单

从此叫他马院士!马斯克入选美国工程院院士,张宏江博士入选外籍院士