大众点评爬虫分析,,大众点评 的爬虫价格利用css的矢量图偏移,进行加密

只要拦截了css 解析以后再写即可

  1. # -*- coding: utf- -*-
  2. """
  3. Created on Sat Apr ::
  4.  
  5. @author: Administrator
  6. """
  7. import re
  8. import requests
  9. from bs4 import BeautifulSoup
  10.  
  11. headers = {
  12. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
  13. 'Accept-Encoding': 'gzip, deflate, br',
  14. 'Accept-Language': 'zh-CN,zh;q=0.9',
  15. 'Cache-Control': 'max-age=0',
  16. 'Connection': 'keep-alive',
  17. 'Cookie': 'cy=13; cye=wuxi; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; _lxsdk_cuid=16a5c669f37c8-00e87b02ef26eb-e323069-1fa400-16a5c669f38c8; _lxsdk=16a5c669f37c8-00e87b02ef26eb-e323069-1fa400-16a5c669f38c8; _hc.v=0ff28a55-7cc0-b228-f700-c5a9a02cf919.1556328391; s_ViewType=10; _lxsdk_s=16a5c669f39-2cc-cf2-eeb%7C%7C64',
  18. 'Host': 'www.dianping.com',
  19. 'Referer': 'https://www.dianping.com/',
  20. 'Upgrade-Insecure-Requests': '',
  21. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
  22. }
  23. #url = 'https://www.dianping.com/search/keyword/13/0_%E4%B8%87%E8%B1%A1%E5%9F%8E' # 万象城
  24. url = 'https://www.dianping.com/search/keyword/13/0_%E4%B8%80%E7%82%B9%E7%82%B9'
  25. tem = requests.get(url, headers = headers)
  26. ls = tem.text
  27. soup = BeautifulSoup(ls, 'lxml')
  28. #//div[@class="shop-list J_shop-list shop-all-list"]
  29. linkes = soup.select('link[type="text/css"]')
  30.  
  31. '''获取svg css链接代码'''
  32. for link in linkes:
  33. tem = link.attrs['href']
  34. if tem.__contains__('svg'):
  35. svg_href = 'https:'+tem
  36. css_html = requests.get(svg_href).text # 获取svg的内容
  37.  
  38. '''获取标题'''
  39. titles = []
  40. pes = []
  41. title = soup.select('div[class="shop-list J_shop-list shop-all-list"] ul li div[class="tit"] a h4')
  42. for t in title:
  43. titles.append(t.get_text())
  44. '''获取数据url的方法,传入参数为前两个字母'''
  45. def get_svg_url(svg_):
  46. svg_url = "http:" + re.findall('class\^="{}".+(//.+svgtextcss.+\.svg)'.format(svg_),
  47. '\n'.join(css_html.split('}')))[]
  48. return svg_url
  49. '''获取价格'''
  50. comment = soup.select('div[class="shop-list J_shop-list shop-all-list"] ul li div[class="comment"]')
  51. for com in comment:
  52. tem_price = com.select('a')
  53. price = tem_price[].select('b')
  54. svges = tem_price[].select('b svgmtsi')
  55. if price == []:
  56. pes.append(' ')
  57. continue
  58. tem_pri1 = price[] # 价格直接显现的部分
  59. str_pri1 = re.findall('<b>(.*?)</b>', str(tem_pri1))[] # 去除b
  60. pri1=re.sub(r'<svgmtsi class=".*"></svgmtsi>',' ',str_pri1)
  61. # pri1 = tem_pri1.get_text()
  62. # print(pri1)
  63. pri2 = ''
  64. for svg in svges:
  65. tem_svg = svg.attrs['class'][] # svg的属性
  66. xy_loc = re.findall('{}{{background:(.*?);}}'.format(tem_svg),css_html)[].split(' ') #正则将其的坐标提取处理,注意{{}}
  67. svg_url = get_svg_url(tem_svg[:])
  68. thr = requests.get(svg_url).text
  69. y = abs(float(xy_loc[].replace('px', ''))) # 坐标的y轴
  70. sop = BeautifulSoup(thr, 'lxml')
  71. text = sop.select('text')
  72. for te in text: # 判断密文在第几行并找出密文
  73. index = float(te.attrs['y'])
  74. if y <= index:
  75. miwen = te.get_text()
  76. break
  77. '''解密x,判断其位置'''
  78. x = float(xy_loc[].replace('px', '')) # 坐标的y轴
  79. ind = int((x+)/(-))
  80. tem_pri = list(miwen)[ind]
  81. pri2 = pri2+tem_pri
  82. # print(pri1.replace(' ',pri2))
  83. # print(pri1, pri2)
  84. pes.append(pri1.replace(' ',pri2))
  85. # print(tem_pri)
  86. # pri2 = svges
  87. # price = pri1.replace(' ',pri2)
  88. # print(pri1, pri2)
  89.  
  90. for i,j in zip(titles,pes):
  91. print(i,j)

爬虫--反爬--css反爬---大众点评爬虫的更多相关文章

  1. 【Python3爬虫】大众点评爬虫(破解CSS反爬)

    本次爬虫的爬取目标是大众点评上的一些店铺的店铺名称.推荐菜和评分信息. 一.页面分析 进入大众点评,然后选择美食(http://www.dianping.com/wuhan/ch10),可以看到一页有 ...

  2. Node.js大众点评爬虫

    大众点评上有很多美食餐馆的信息,正好可以拿来练练手Node.js. 1. API分析 大众点评开放了查询商家信息的API,这里给出了城市与cityid之间的对应关系,链接http://m.api.di ...

  3. Python爬虫反反爬:CSS反爬加密彻底破解!

    刚开始搞爬虫的时候听到有人说爬虫是一场攻坚战,听的时候也没感觉到特别,但是经过了一段时间的练习之后,深以为然,每个网站不一样,每次爬取都是重新开始,所以,爬之前谁都不敢说会有什么结果. 前两天,应几个 ...

  4. 大众点评评论数据抓取 反爬虫措施有css文字映射和字体库反爬虫

    大众点评评论数据抓取  反爬虫措施有css文字映射和字体库反爬虫 大众点评的反爬虫手段有那些: 封ip,封账号,字体库反爬虫,css文字映射,图形滑动验证码 这个图片是滑动验证码,访问频率高的话,会出 ...

  5. python爬虫实战---爬取大众点评评论

    python爬虫实战—爬取大众点评评论(加密字体) 1.首先打开一个店铺找到评论 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经 ...

  6. Python爬虫入门教程 64-100 反爬教科书级别的网站-汽车之家,字体反爬之二

    说说这个网站 汽车之家,反爬神一般的存在,字体反爬的鼻祖网站,这个网站的开发团队,一定擅长前端吧,2019年4月19日开始写这篇博客,不保证这个代码可以存活到月底,希望后来爬虫coder,继续和汽车之 ...

  7. python爬虫爬取大众点评并导入redis

    直接上代码,导入redis的中文编码没有解决,日后解决了会第一时间上代码!新手上路,多多包涵! # -*- coding: utf-8 -*- import re import requests fr ...

  8. Python 爬取大众点评 50 页数据,最好吃的成都火锅竟是它!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 胡萝卜酱 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  9. 用Python爬取大众点评数据,推荐火锅店里最受欢迎的食品

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:有趣的Python PS:如有需要Python学习资料的小伙伴可以加点 ...

随机推荐

  1. 牛客网-乌龟跑步-(四维dfs)

    链接:https://ac.nowcoder.com/acm/problem/15294来源:牛客网 题目描述 有一只乌龟,初始在0的位置向右跑. 这只乌龟会依次接到一串指令,指令T表示向后转,指令F ...

  2. DJango 基础 (5)

    模板加载静态文件 在settings.py文件中添加STATICFILES_DIRS,设置静态文件目录路径,同templates. # settings.py文件中​STATIC_URL = '/st ...

  3. Tengine安装(阿里baba的)-Nginx

    在先前的文章中介绍过Tengine,先前只是使用了运维人员配置好的内容,未自己进行过安装配置.周末闲来无事,对于Tengine进行了尝试性的安装.记录下面方便以后再做改进. Tengine官网上有个非 ...

  4. PTA 1067 Sort with Swap(0, i) (25 分)(思维)

    传送门:点我 Given any permutation of the numbers {0, 1, 2,..., N−1}, it is easy to sort them in increasin ...

  5. python 迭代器生成

    博客:http://www.cnblogs.com/alex3714/articles/5765046.html 列表生成式 [i*2 for i in range(10)] #创建时就生成,不调用也 ...

  6. java 线程Thread 技术--volatile关键字

    java 语言中允许线程访问共享变量,为了保证共享变量能被准确和一致的更新,Java 语言提供了volatile 关键字,也就是我们所说的内存一致性: 问题抛出:(尝试去运行下面代码,以及将volat ...

  7. Spark官方文档翻译(一)~Overview

    Spark官方文档翻译,有问题请及时指正,谢谢. Overview页 http://spark.apache.org/docs/latest/index.html Spark概述 Apache Spa ...

  8. JavaSE基础知识(2)—变量和运算符

    一.变量 1.理解 概念:内存中的一块数据存储空间 2.变量的三要素 数据类型变量名变量值 3.变量的语法和使用步骤★ 步骤1:声明变量(计算机开辟一块空间) 数据类型 变量名;步骤2:为变量赋值(初 ...

  9. Python开发——面向对象【类、实例】

    类 # class Chinese(object): class Chinese: ''' 类的说明性文档 ''' pass print(Chinese) # <class '__main__. ...

  10. NC 5导出Excel

    Excel导出功能 NC中功能事件代码: @Override protected void onBoRefresh() throws Exception { UIFileChooser fc = ne ...