大众点评店铺信息爬虫

本贴最后更新于 1223 天前,其中的信息可能已经水流花落

大众点评店铺信息爬虫

花式反反爬之抓取大众点评店铺信息。

项目地址

Gitee:https://gitee.com/Tooi/dianping

项目目录

│  config.py
│  dianping.py
│  parse.py
│  proxy.py
│  README.md
│  requirements.txt
├─utils
│      common.py
│      ua.log
│      __init__.py
└─view
        analysis*.png
        db.png

环境依赖

pip3 install -r requirements.txt

抓取流程

  美食店铺首页开始,遍历抓取每页内容。

    for i in range(50):
        print("第%d页:" %(i+1))
        response = self.get_store_list_page(INIT_URL.format(str(i+1)))
        self.parse_data(response)
        time.sleep(eval('%.1f'%random.random()))
        # 测试仅抓取第一页
        break

花式反爬

  大众点评的反爬措施很强,可以 ban 掉大部分爬虫。当然,误伤率也比较高。测试期间发现的反爬措施有:

  • 常规链接 404(店铺详情页链接 404 页面)
  • 请求头校验
  • 多类型字体反爬(偏移量,自定义 css)
  • 验证码(常规四字中英文混合)
  • cookies
  • ban ip

  例如,当我用 Postman 测试链接时发现,若不用 UA 则返回 403,要求输入验证码方可正常访问。而大众点评总的来说还是基于 IP 检测,所以,爬虫的重点在于:代理 IP 的质量

反反爬

  • 挂代理(加强型爬虫代理)
  • Headers 添加随机 UA 和 Refer 参数
  • 随机抓取时延

  注意:

  • 加强型爬虫代理非一般隧道或 API 类型代理 IP,成活率较高
  • 原始 headers 中没有 Refer 参数,测试发现,添加 Refer 参数可提高请求头伪装效率

解释说明

  1. 为测试方便,未实现自动获取 css、svg_font、svg_num 等链接,请自行复制(测试期间每间隔一天变化一次)
  2. 未处理数字、文字拼接逻辑。例如:页面要处理的数字为 1081 中的 1、0、1,实际结果可能为 8101(日后再更)
  3. config.py 中的所有代理均已失效或涂改,需要自己更换

运行

  命令行切换至根目录:

>>> python dianping.py

抓取结果

公告

本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及点评网侵权,请邮箱联系,会尽快处理。

  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖 • 2 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    536 引用 • 672 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...