爬虫--反爬--css反爬---大众点评爬虫

news/2024/7/19 10:23:37 标签: 爬虫, python, xhtml

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

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

 

 

 

# -*- coding: utf-8 -*-
"""
Created on Sat Apr 27 09:28:50 2019

@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': '1',
'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('}')))[0]
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[1].select('b')
svges = tem_price[1].select('b svgmtsi')
if price == []:
pes.append(' ')
continue
tem_pri1 = price[0] # 价格直接显现的部分
str_pri1 = re.findall('<b>(.*?)</b>', str(tem_pri1))[0] # 去除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'][0] # svg的属性
xy_loc = re.findall('{}{{background:(.*?);}}'.format(tem_svg),css_html)[0].split(' ') #正则将其的坐标提取处理,注意{{}}
svg_url = get_svg_url(tem_svg[:2])
thr = requests.get(svg_url).text
y = abs(float(xy_loc[1].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[0].replace('px', '')) # 坐标的y轴
ind = int((x+7)/(-12)) 
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)

 

 

 

 

 

 

转载于:https://www.cnblogs.com/baili-luoyun/p/10780485.html


http://www.niftyadmin.cn/n/973680.html

相关文章

安卓手机测评_2018最全安卓模拟器跑分测评

原标题&#xff1a;2018年最完整的Android模拟器运行评分测评2017年&#xff0c;手游行业发展如火如荼。王者荣耀、荒野行动、小米枪战等大型游戏占领市场。手游对手机的性能要求更高&#xff0c;移动终端的弊端逐渐显现。电量不足、手机发热等常见问题已经司空见惯。此外&…

安卓dj专业打碟机软件_到现在还有人相信“碟机编曲”??

到现在还有人相信“碟机编曲”&#xff1f;&#xff1f;乐哥导读你相信用“碟机”编曲么&#xff1f;在舞台上嗨到爆的DJ和编曲之间到底有没有什么关系&#xff1f;“碟机编曲”是一个梗&#xff0c;一开始是&#xff0c;现在也是。会使用这个词组的朋友们&#xff0c;往往都明…

windows和linux下mysql的重启命令

在 Windows 下&#xff1a;开始->运行->cmd 启动&#xff1a;net start mysql 停止&#xff1a;net stop mysql 无重启&#xff0c;必须先停止再启动&#xff01;&#xff01;&#xff01; 在LINUX 下&#xff1a;启动&#xff1a;/etc/rc.d/init.d/mysqld start 停止&am…

google play连接超时_谷歌Play多年来一直传播高级安卓恶意软件,并曾被用于间谍活动!...

欢迎收看风火轮技术团队第一前沿资讯&#xff0c;我是本文报道员小风风。谈到goole play&#xff0c;各位肯定并不陌生&#xff0c;小风风也相信在座各位的手机里多少也安装过google play。近日&#xff0c;google play被曝多年来一直在传播高级Android恶意软件&#xff0c;你的…

Linux uniq 命令

Linux uniq 命令 Linux 命令大全 Linux uniq 命令用于检查及删除文本文件中重复出现的行列&#xff0c;一般与 sort 命令结合使用。 uniq 可检查文本文件中重复出现的行列。 语法 uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入…

Nginx 极简入门教程!

上篇文章和大家聊了 Spring Session 实现 Session 共享的问题&#xff0c;有的小伙伴看了后表示对 Nginx 还是很懵&#xff0c;因此有了这篇文章&#xff0c;算是一个 Nginx 扫盲入门吧&#xff01; 基本介绍 Nginx 是一个高性能的 HTTP 和反向代理 web 服务器&#xff0c;同时…

关于增强for循环

1 增强for循环 增强for循环是for的一种新用法&#xff01;用来循环遍历数组和集合。 1.1 增强for的语法 for(元素类型 e : 数组或集合对象) { } 例如&#xff1a; int[] arr {1,2,3}; for(int i : arr) { System.out.println(i); } 增强for的冒号左边是定义变量&#xff0c;…

JavaScript数组操作

0 写在前面 数组在任何语言中&#xff0c;都是一种十分重要的数据类型。因此&#xff0c;在JavaScript中&#xff0c;熟练掌握数组以及字符串的操作&#xff0c;是十分必要的。 为此&#xff0c;我在这里列举并练习了一些有关于数组与类数组的基本操作。 1 数组的常用操作 1-1 …