大众点评列表页采集思路,破解字体文件反爬(包含项目github 可用时间至2020-01-21)

前言:最近想试试抓取大众点评数据,找了些开源代码发现基本上都用不了。自己写了一个能跑起来的项目,分享给大家,首先抓取“海底捞”店铺的列表页数据。

注意,大众点评的采集需要全程登录,我是直接使用自己账号的cookie登录。

1.找到列表页请求接口

**进入点评网首页 搜索海底捞,找到列表页接口
https://www.dianping.com/search/keyword/344/%E6%B5%B7%E5%BA%95%E6%8D%9E/p1

可以看到这个url有几个参, 第一个344是搜索的地区,中间那一段乱码代表的是搜索关键字(搜索关键字后 查看接口,根据url参数,就可以替换关键字为乱码),p1是翻页参数**
在这里插入图片描述
可以看到 店铺信息的返回数据都是加密字符 因为点评网自己加载了字体文件
在这里插入图片描述
在这里插入图片描述

2.破解字体文件反爬

进入这个url在这里插入图片描述
这些以woff为结尾就是字体文件 把他们下载到本地 用FontCreator加载下(用百度在线字体打开会报错 不知道什么原因)
可以看到
在这里插入图片描述
可以看到 每一个汉字都会对应一个编码 接下来就要将汉字编码组成一个映射表

这里可以选择用ocr识别或者用第三方库fontTools加载字体文件(ocr不是那么准确),我这里用第二种方式。
首先取出全部的汉字编码 存储到列表中

from fontTools.ttLib import TTFont

font = TTFont('./font/' + name[1] + '.woff')             # 加载字体文件 .woff后缀
uni_list = font['cmap'].tables[1].ttFont.getGlyphOrder()  # 取出映射编码保存到列表中

在这里插入图片描述
自定义所有汉字列表 并将其存储为json文件
在这里插入图片描述
在这里插入图片描述
接下来把两个表结合成字典 {编码:编码对应汉字,…}
在这里插入图片描述
再根据编码替换html中的每个节点信息,html的中的汉字就已经还原了。
在这里插入图片描述在这里插入图片描述
接下来只需要自行解析并存储下来就可以。

项目github:https://github.com/sph116/dazhong_spiderhttps://github.com/sph116/dazhong_spider
我只是讲一下大体思路 实际上很多细节我没有一一解析。大家可以参照我的github,后续我将会单独写一篇文章,来讲解详细代码 欢迎交流

==以下是以”海底捞“关键词搜索为例(全国670家左右海底捞分店) 采集到的各个店铺多维数据展示 ==
在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值