# kunming_primary_school **Repository Path**: MoqiLintong/kunming_primary_school ## Basic Information - **Project Name**: kunming_primary_school - **Description**: 爬取某地学校信息。项目本身很简单,主要是解析已有的信息表,然后保存在本地 - **Primary Language**: Python - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-11 - **Last Updated**: 2021-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 爬取已整理的学校信息并保存到本地 > 此项目解决的需求是保存昆明中小学学校信息,主要是 [五华区学校名录-云南昆明市 (ruyile.com)](https://www.ruyile.com/xuexiao/?a=4479) 已整理的学校的名称、联系电话、邮编和地址信息。项目很简单,但在操作中依然存在一些有趣的问题,不过用了一些很拙劣的方法解决了。 ### 信息不在一页中显示 学校信息不在一页中显示,需要在爬取完当前页面后爬取下一页,而获取下一页的 URL 就是爬取页面上的特定 URL。这里参考了 [python爬虫关于下一页面链接的爬取](https://bbs.csdn.net/topics/392205034) 。 ```html
``` 虽是对正则表达式不是很懂,但是简单分析,在本项目的程序中用了如下的代码 ```python while True: # ... prepare = target.find(attrs={'class': 'fy'}) next_page_link = re.findall(r'(?=下一页)', str(prepare), re.DOTALL) if next_page_link: url = html.unescape(next_page_link[0]) else: break ``` ### 分离解析网页的逻辑与输出信息到文档的逻辑 程序的两个主要功能就是解析网页和将信息保存到文档中,如何将这两个逻辑分离? 首先谈为什么分离,因为解析网页后,信息不一定非要保存到 Excel 文档中,也可能是其他文件如CSV,JSON等,甚至可能是数据库中;而且,保存到文档中的数据不一定非得来自网络爬虫,也有可能是从来自其他源头。总之就是解析网页和数据保存到文档是两个逻辑,不应糅合在一起。 其次谈编程中极易将这两个逻辑耦合在一起,可能是因为方便吧,也可能是一个小项目不想实现的太“复杂”等等。 最后,我是如何将这两个逻辑分离的? ```python def parse_html(url: str, output: list): ``` 通过列表对象 output 临时保存信息,在上层的程序中可将 output 写入到文档中