Python爬取已故院士名单并导入Excel中

本期分享用Python爬取已故院士名单并导入Excel中。这是2023年暑期实习期间boss安排的任务,需要将已故院士名单----中国科学院学部与院士的名单导入到Excel中,并且一个名字仅存在一个单元格里。由于直接导出的话,所有的名字会在一个单元格里,而且每个人的名字长度不同,用Excel处理十分麻烦,所以我决定直接将名字爬出来,并导入到Excel中。

首先,导入所需的包

import requests
import re

其次,发送请求得到响应,并解码。

#定义要爬取的url
url = "http://casad.cas.cn/ysxx2022/ygys/"
#定义请求头
headers = {
           "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Mobile Safari/537.36 Edg/114.0.1823.43",
           "Cookie":"Secure; Hm_lvt_141d1d902a441a529f2409bd8abe53ef=1688811037; Secure; Hm_lpvt_141d1d902a441a529f2409bd8abe53ef=1688819535",
           }
#发送请求得到响应
response = requests.get(url,headers = headers)
#解码相应content:html字符串
content = response.content.decode('utf8','ignore')

接着,使用正则表达式提取数据

#使用正则表达式提取数据
contents = re.findall('<div\sclass="rmbs_a">(.*?)</div>', content, re.DOTALL)
str = contents[0]
str1 = str.split( )
#提取带有名字的字符串
names = []
for i in range(2,len(str1),3):  
    names.append(str1[i])

names的内容如图所示:

然后,匹配中文名字

yuanshi_names = []
for i in range(len(names)):
    yuanshi_names.append(re.findall('target="_blank">(.*?)</a>',names[i],re.DOTALL))

yuanshi_names的内容如图所示:

最后,写入excel表

#写入excel表
import xlwt
f = xlwt.Workbook('encoding = utf-8') #设置工作簿编码
sheet1 = f.add_sheet('sheet1',cell_overwrite_ok=True) #创建sheet工作表
for i in range(len(yuanshi_names)):
    sheet1.write(i,0,yuanshi_names[i]) #写入数据参数对应 行, 列, 值
f.save('已故院士名单.xlsx')#保存.xls到当前工作目录

如图所示:

心得体会:虽然数据分析师重在分析,不必精于爬虫,但是如果会一点爬虫的知识,说不定哪天就用到了,多学点东西总是没错的。

好啦,本期就分享到这里!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值