目标
- 爬取网上公开的历年杰青数据
- 清洗并存储在数据库中
工具
python、 beautifulsoup、 pandas、 sqlalchemy、mysql
步骤
获取数据源
搜索引擎上按年份搜索关键字“杰青 名单”,在搜出的网页内,如提供表格形式的名单,则为爬取数据。
下面是我找到的2020年至2003(缺少2004年数据)的网页url。
1 | url2003 = 'http://www.nsfc.gov.cn/nsfc/cen/temp/2003yy.html' |
编写爬虫程序
接下来直接上代码,python爬虫,根据不同url地址内的表格样式不同,代码需要微调一下。会在注释中增加说明
1 | import requests |
数据清洗
由于历年的数据源表格形式不太一样,在写入mysql的时候,可能会出现一些问题。比如爬到的数据转换成pandas DataFrame后,
DataFrame表头跟数据库表字段匹配不上,这样写入数据就会出错。这时,临时修改一下mysql表列名,能跟DataFrame匹配上就可以了。
有些年份,并没有给出国别字段信息,这些都可以后期在mysql表中进行补充清洗。
总结
- pandas 获取html中table结构数据方便,写入mysql更方便
- 爬虫程序本身构造不复杂,遇到问题需要去慢慢摸索解决
- 需要一些html前端技术,查看数据源网页上html源代码,来分析爬虫该如何获取数据。
- 本文作者: 达文西
- 本文链接: https://edsiongithub.github.io/2021/04/29/6/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!