这是上周五在微信群里看到的问题:
之前曾尝试过对知乎和微博热榜的简单爬虫,算是小有经验但仍需锻炼,于是趁着这个机会,主动包揽了爬虫代码,并在这回顾整理一番。
对于爬虫的概念,往复杂说会涉及很多技术点,但最核心的点很简单:爬虫就是按照我们给定的规则自动去网上把数据抓取下来。对应到上面的需求,想统计当地所有医院的信息,同时已经筛选好相关网站了,那么我们只要对应其网站对抓取数据的过程进行设计编码,即可最终实现爬虫任务。
#1 初步探索
那首先,我们先去瞅瞅要爬的网站什么样。对方选定的是家庭医生在线网,想要获取网站上列出的所有西安地区医院的信息。
# 家庭医生在线网、陕西西安地区链接
https://yyk.familydoctor.com.cn/area_305_0_0_0_1.html
通过链接,我们点开的网页如下:
网页展示面向的对象是人,它的设计是方便观众点击浏览。那么传统方式上我们如果想统计这些数据,就可以逐个点开来复制粘贴汇总到一起。
但爬虫是由计算机实现的,它并不需要这些加过装饰、设计的页面,它只关心其中最重要的数据。我们既然要为爬虫制定规则,那么直接围绕着页面的代码和数据来进行分析是最高效的。
右键点击页面,选择“显示网页源代码”:
刚我们提到网页对数据进行装饰设计,网页源代码所展示的就是网页如何通过前端代码(HTML,JavaScript,CSS)加工数据的过程;而爬虫要做的就是在这些代码中提取出目标数据。既然加工数据应用到了前端语言,那么爬虫自然也需要些前端基础才好操作。
比如上图中,当我们下拉到 1369 行时看到了第一组目标数据:从莲湖区到高陵县,每个地区前面的 href="链接" 都对应了各地区的链接。因为我们想要获取西安本地所有医院信息,那么西安所有地区的医院名单肯定是要抓取的。当然,我们也可以继续向下看,页面中针对不同地区列举了相应的具体