投稿    登录
欢迎来访~

大众点评还不会爬?跟着我,我教你。

Python 四毛 17069浏览 9评论

大家好,我是四毛,好久没有写东西了,欢迎大家关注我的公众号。

今天的文章是关于如何使用requests来爬取大众点评的数据

看完本文,你可以:

1、了解大众点评的CSS反爬虫机制

2、破解反爬虫机制

3、使用requests即可正确获取到评论数,平均价格,服务,味道,环境数据,评论文本数据;

 

如果你想跟我继续交流的话,欢迎加我的个人微信,二维码在最后。

如果你想获取更多的代码,请关注我的公众号,并发送 “大众点评”即可。

同时,代码我并没有做太多的优化,因为没有大量的代理,爬不了太多的内容。

这里只是跟大家分享一下处理的流程。欢迎来公众号留言探讨。

 

正文开始。

1.前言

在工作生活中,发现越来越多的人对大众点评的数据感兴趣,而大众点评的反爬又是比较严格的。采取的策略差不多是宁可错杀一万,也不放过一个。有的时候正常浏览都会跳出验证码。

另外,在PC端的展示数据是通过CSS来控制的,从网页上看不出来太大的区别,但是用普通的脚本取获取时,会发现数据是获取不到的,具体的源代码是下面这样的:

,在搜资料的时候,你会发现,很多教程都是用的selenium之类的方法,效率太低,没有啥技术含量。

所以,这篇文章的面向的对象就是PC端的大众点评;目标是解决这种反爬虫措施,使用requests获取到干净正确的数据

跟着我,绝不会让你失望。

2.正文开始

相信搞过大众点评网站的同学都应该知道上面的这种是一个css反爬的方法,具体的解析操作,即将开始。

找到藏着秘密的css

当我们的鼠标在上面框框内的span上面点击时,会发现右边部分会相应的发生变化:

这张图片很重要,很重要,很重要,我们要的值,几乎都从这里匹配出来。

这里我们看到了vxt20这个变量对应的两个像素值,前面的是控制用哪个数字,后面的是控制用哪一段的数字集合,先记下,后面要用,同时这里的值应该是6

这里其实就是整个破解流程最关键的一步了。在这里我们看到了一个链接。

瞎猫当死耗子吧,点进去看看。

https://s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/f556c0559161832a4c6192e097db3dc2.svg

你会发现,返回的是一些数字,我一开始是不知道这是啥玩意的,看过一些大神的解析才知道,其实这里就是我们看到的数字的来源,也就是整个破解的源头,知道了这些数字的含义,也就可以直接破解了整个反爬的流程。

现在直接看源代码:

可以看到这里面的几个关键数字:font-size:字体大小还有几个y的值,我到后面才知道原来这个y是个阈值,起的是个控制的作用

所以,这一反爬的原理就是:

获取属性值与偏移量和阈值映射,然后从svg文件中找到真数据。

现在我们就要用到上面的像素值了。

1.把所有的值取绝对值;

2.用后面的值来选择用哪个段的数字,这里的值是103,所以使用第三个段的数字集合;

3.因为每个字体是12个像素,所以用163/12=13.58,约等于14,那么我们数一下第14个数字是啥,没错,是6,和预期一样。你可以多试验几次。

以上,就是整个破解的逻辑过程。

画个流程图,装个逼:

 

3.Show Code

下面开始晒代码,俗话说得好,天下代码一大抄。

这里对主要的步骤代码进行解释, 如果你想获取更多的代码,请关注我的公众号,并发送 “大众点评”即可。

1.获取css_url及span对应的TAG值;

2.获取属性与像素值的对应关系

 

3.获取svg文件的url

 

4. 获取最终的值

4.结果展示

评论条数数据

其实,其他的我都写好了,就不贴了

大众点评还不会爬?跟着我,我教你。

 

评论具体数据

 

 

5.结语

以上就是大众点评Css反爬破解的全部步骤和部分代码。

 

如果你想获取更多的代码,请关注我的公众号,并发送 “大众点评”即可。

 

 

 

 

转载请注明:静觅 » 大众点评还不会爬?跟着我,我教你。

喜欢 (31)or分享 (0)

我的个人微信公众号,联系我请直接在公众号留言即可~

扫码或搜索:进击的Coder

进击的Coder

微信公众号 扫一扫关注

想结交更多的朋友吗?

来进击的Coder瞧瞧吧

进击的Coder

QQ群号 99350970 立即加入

进击的Coder灌水太多?

这里是纯粹的技术领地

激进的Coder

QQ群号 627725766 立即加入

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击下面的

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(9)个小伙伴在吐槽
  1. 2.用后面的值来选择用哪个段的数字,这里的值是103,所以使用第三个段的数字集合; 为什么就选第三段呢?
    白云深处有人家2019-05-30 14:58 回复
  2. 点评的class与svg每一天都会变
    vimin2019-05-16 10:06 回复
  3. 这个不错
  4. cookie没用,都是302或者403
    yyyhh2019-03-29 14:38 回复
  5. 反被盘,唔知在那
    情感咨询2019-03-21 12:16 回复
  6. 能否告知博主爬的是哪个网页呢?
  7. 刚刚看了下,dp已经把URL从span转移到了下面的子节点上 👿
    clooo2019-03-11 23:12 回复
  8. 查了好几个span都没找到文中的s3plusxxx的URL
    clooo2019-03-11 22:57 回复
  9. 开了好几个点评的网页,一直没找到你上面的案例,能否告知博主爬的是哪个网页呢?
    clooo2019-03-11 22:54 回复