[爬虫] 美团商家信息采集-初步分析

这篇文章分享我爬美团信息的经验给你们。

首先,要爬一个网站的数据,可以选择网页端,移动端,app端。相对来说,app端是最不好爬的,其次是网页端,最好爬的是移动端,所以我往往会选择移动端去爬取。

要爬取的信息在商家的详情页,如果要整站爬取,就需要遍历每个城市,遍历每个类别,遍历每一页。

[爬虫] 美团商家信息采集-初步分析

具体需要哪些信息,根据具体的需求来,不过要知道的一点就是,你想要的信息可能是ajax加载的,这里要的信息是直接在html可以找到的(在HTML中,不一定是嵌在标签里,也有可能是在js代码里)。

我们需要拿分类下的个别类别的商家地址电话等等信息,虽然不是拿整站的,但是也是要按整站的逻辑来写。

OK,分析一下美团移动端的页面结构和逻辑结构。首页是分类和推荐,我们要的是分类,推荐就不管了。

[爬虫] 美团商家信息采集-初步分析

进入全部分类,这里是整站数据的分类,这个页面我们是需要爬的。这里需要知道,不是每个类别的页面结构都是一样的,比如酒店类别是会跳到美团酒店页面去的,经探索发现,美团的页面结构分三种,具体有时间的话就一个个点击进去看看有什么不同,这里就不介绍了,就拿美食类这种页面结构讲。

进入商家列表页,可以看到还可以更细分的去爬,按城市地区去爬,按排序去爬,这里按城市>类别>地区>排序分页去爬。

[爬虫] 美团商家信息采集-初步分析

点击商家就进入了商家详情介绍的页面。这里的结构就出来了,要写的代码结构,大致就是先遍历城市,再遍历类别,地区,页码。一般情况下,都会在详情页进行反爬的限制,在一些列表页往往很少反爬的机制在,比如,有些网站需要登录才能看到详情,或者需要一层层进去才能看到详情,又或者详情页的请求做了IP限制。这里的详情页只是做了IP和cookie的限制。

经以上分析,我们可以先遍历完所有的列表页,先拿到详情链接,拿完再去拿详情页的信息。技术设计就按两种:

用requests单线程实现列表页爬取,这样就可以记录爬到了哪个位置,多线程要实现断点采集比较困难。

[爬虫] 美团商家信息采集-初步分析

用scrapy多线程代理池爬取详情,scrapy框架本身就支持多线程,通过配置很快就可以实现。

[爬虫] 美团商家信息采集-初步分析

具体的实现逻辑,下篇慢慢介绍。