爬虫总结

美团美食

通过分析不同的分类,发现不同的分类的页面和接口不是统一的,所以需要针对不同的分类编写对应的逻辑。以美食分类为例

获取所有城市

美团美食业态的访问地址为,浏览访问时会自动定位城市,所以进行爬虫时先把城市的数据爬下来,在切换城市界面解析一下html就可以获取到所有城市以及对应的code,随后就可以循环所有的城市,一个城市一个城市地爬。

本来想解析页面html获取商圈的,但是只有当鼠标移动到某一个区域上面才会出现上图下拉的商圈数据,其实所有商圈的数据(基本包含了当前页面的所有数据)已经保存在当前页面的js脚本中,通过正则表达式很容易得到json结果

提取所有的商圈id(对应subAreas)并保存与城市的关联关系

大众点评美食

思路跟美团的相似,但是比美团更为复杂点,通过观察发现大众点评的数据比较多,,而且每页15条记录,最多显示50页,很多商圈都超过15*50这个数量,所以需要更细化,最终细化到每个商圈下的分类:城市->区->商圈->分类

获取所有城市

在切换城市界面可以解析html获得所有城市数据

然后还要循环访问第一个行政区才能拿到商圈,这里多了一层访问,不像美团区(area)和商圈(subArea)数据是一次请求取得

获取所有商圈的美食分类

在获取到商圈数据后,接着需要获取商圈下的美食分类,每个商圈的分类是不一样的,所以要循环所有的商圈,而且美食的分类还分为一级分类,二级分类,这里细分到一级分类

获取美食商家

以商圈的每个分类为单位分页获取商家的数据,与美团一样手机 码这些信息只在详细页面,在分页页面先获取商家id(),名称和详细页面url。在分页页面和详细页面点评都做了反爬,都是通过css来控制一些字和中文的显示,还好,在分页列表所需的信息都是原始数据

并不是所有字符都做了手脚,只是特定某些字符被使用一个css类来代替了,还可以发现表示是一个中文(准确说是用于地址的一个中文字符),是一个数字,最终所有的原始值就在一个背景图(svg)中,然后通过class控制像素偏移来显示需要的字符,下图是用于地址的字符,只要是地址中包含以下的字符,就用css来控制,而数字、评论等其它也有各自的一张背景图

确定后返回vidalia控制面板启动Tor

安装配置polipo

Tor的默认代理端口是是9050(vidalia设置->高级->Tor配置文件中可查看),但是是Socks5协议的,编写爬虫程序使用的是http代理,需要使用使用polipo进行转换,下载polipo-1.1.0-win32.zip解压,找到config.sample,添加配置

然后运行,根据输出提示启动了8123端口作为http代理监听端口。配置一下windows 络代理进行验证

附上相关代码段

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年11月19日
下一篇 2018年11月19日

相关推荐