美团爬虫-商铺信息抓取2

我们接着上一篇继续分析,数据来源确认好了,参数构造分析后,创建scrapy项目

这里采用手机浏览器中api的构造方式抓取

美团爬虫-商铺信息抓取2

接着上一篇讲的,需要细化区域,那么就需要拿到该区域的areaId

在请求中我们并没有看到有额外的XHR负责区域id数据的传输,那么就说明该数据在源码中,我们通过定位查找,可以发现地区id值是通过js进行选取的

美团爬虫-商铺信息抓取2

将areaId以字典areaList的形式存储,并重新构造start_requests,遍历areaList进行请求

美团爬虫-商铺信息抓取2

下面就是构造参数做post请求

美团爬虫-商铺信息抓取2

解析response,从获得的json数据中取出需要的

美团爬虫-商铺信息抓取2

翻页再请求

美团爬虫-商铺信息抓取2

深度再爬取商铺地址,营业时间,电话等信息

https://meishi.meituan.com/i/poi/poiid?ct_poi=ctPoi  通过post得到的两个参数,可以拼接得到该商店的详细访问页面,进而获得更多信息,比如地址,营业时间,电话等,同样在js中可以找到,可以采用正则匹配的方式提取需要的信息

美团爬虫-商铺信息抓取2

美团爬虫-商铺信息抓取2

当然若需要存储还需提前将item和pipelines写好,并在解析后yield item,使各商铺信息item在pipelines中进行筛选和存储处理,还可以扩展,比如所有地市的美食,美食推荐,评论的抓取等~

其中需要注意的是请求需要带cookie值,在middlewares中我们可以新建一个cookie处理类,使得每次请求都带上cookie

美团爬虫-商铺信息抓取2

必要时可以在Middleware中加上ip代理,调整爬取速度等方式,避免反爬识别

美团爬虫-商铺信息抓取2

最后附上源码地址,有兴趣的可以到 github下载并mark一下!或者本地资源下载~