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

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

# -*- coding: utf- -*-
"""
Created on Sat Apr :: @author: Administrator
"""
import re
import requests
from bs4 import BeautifulSoup headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'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',
'Host': 'www.dianping.com',
'Referer': 'https://www.dianping.com/',
'Upgrade-Insecure-Requests': '',
'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'
}
#url = 'https://www.dianping.com/search/keyword/13/0_%E4%B8%87%E8%B1%A1%E5%9F%8E' # 万象城
url = 'https://www.dianping.com/search/keyword/13/0_%E4%B8%80%E7%82%B9%E7%82%B9'
tem = requests.get(url, headers = headers)
ls = tem.text
soup = BeautifulSoup(ls, 'lxml')
#//div[@class="shop-list J_shop-list shop-all-list"]
linkes = soup.select('link[type="text/css"]') '''获取svg css链接代码'''
for link in linkes:
tem = link.attrs['href']
if tem.__contains__('svg'):
svg_href = 'https:'+tem
css_html = requests.get(svg_href).text # 获取svg的内容 '''获取标题'''
titles = []
pes = []
title = soup.select('div[class="shop-list J_shop-list shop-all-list"] ul li div[class="tit"] a h4')
for t in title:
titles.append(t.get_text())
'''获取数据url的方法,传入参数为前两个字母'''
def get_svg_url(svg_):
svg_url = "http:" + re.findall('class\^="{}".+(//.+svgtextcss.+\.svg)'.format(svg_),
'\n'.join(css_html.split('}')))[]
return svg_url
'''获取价格'''
comment = soup.select('div[class="shop-list J_shop-list shop-all-list"] ul li div[class="comment"]')
for com in comment:
tem_price = com.select('a')
price = tem_price[].select('b')
svges = tem_price[].select('b svgmtsi')
if price == []:
pes.append(' ')
continue
tem_pri1 = price[] # 价格直接显现的部分
str_pri1 = re.findall('<b>(.*?)</b>', str(tem_pri1))[] # 去除b
pri1=re.sub(r'<svgmtsi class=".*"></svgmtsi>',' ',str_pri1)
# pri1 = tem_pri1.get_text()
# print(pri1)
pri2 = ''
for svg in svges:
tem_svg = svg.attrs['class'][] # svg的属性
xy_loc = re.findall('{}{{background:(.*?);}}'.format(tem_svg),css_html)[].split(' ') #正则将其的坐标提取处理,注意{{}}
svg_url = get_svg_url(tem_svg[:])
thr = requests.get(svg_url).text
y = abs(float(xy_loc[].replace('px', ''))) # 坐标的y轴
sop = BeautifulSoup(thr, 'lxml')
text = sop.select('text')
for te in text: # 判断密文在第几行并找出密文
index = float(te.attrs['y'])
if y <= index:
miwen = te.get_text()
break
'''解密x,判断其位置'''
x = float(xy_loc[].replace('px', '')) # 坐标的y轴
ind = int((x+)/(-))
tem_pri = list(miwen)[ind]
pri2 = pri2+tem_pri
# print(pri1.replace(' ',pri2))
# print(pri1, pri2)
pes.append(pri1.replace(' ',pri2))
# print(tem_pri)
# pri2 = svges
# price = pri1.replace(' ',pri2)
# print(pri1, pri2) for i,j in zip(titles,pes):
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. Linux下常用系统分析工具总结(转)

    1.1 top top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具. Top常用的可选参数和其对应的含义如下: (1)-c:显示完整的命令: (2)- ...

  2. OpenStack安装-MySQL,Rabbitmq,memcache.

    基于前一篇的基本环境,现在我们开始安装MySQL. 在node1上面安装MySQL: [root@linux-node1 ~]# yum install mariadb mariadb-server ...

  3. 在ASP.NET MVC中使用Area区域

    在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它们分离开来,比如:Admin,Customer,Bill.ASP.NET MVC项目中把各 ...

  4. AppleID的双重认证

    [链接]AppleID的双重认证https://support.apple.com/zh-cn/HT204915

  5. PHP开发——超全局数组变量

    概述 l  JS中的变量分两类:局部变量.全局变量. l  PHP中的变量分三类:局部变量.全局变量.超全局变量. l  局部变量:在函数内部声明的变量,就是局部变量.函数执行完毕,局部变量就消失了. ...

  6. 深入理解 requestAnimationFrame

    在Web应用中,实现动画效果的方法比较多,Javascript 中可以通过定时器 setTimeout 来实现,css3 可以使用 transition 和 animation 来实现,html5 中 ...

  7. 如何学好游戏3D引擎编程

    注:本文是网上看到的一篇文章,感觉写的很好,因此收藏了下来 <如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才 ...

  8. 嵌入Python | 调用Python模块中无参数的函数

    开发环境 Python版本:3.6.4 (32-bit) 编辑器:Visual Studio Code C++环境:Visual Studio 2013 需求说明 在用VS2013编写的Win32程序 ...

  9. Call to undefined function Workerman\posix_getpid()

    安装扩展 yum install php-posix

  10. c#new和override

    new是覆盖父类的虚方法,当用子类构造方法构造父类对象时调用该虚方法调的是父类的方法(视为子类屏蔽了父类的方法,没实现,还是调用父类的方法). override是重写父类的虚方法,当用子类构造方法构造 ...