https://jia666666.blog.csdn.net/article/details/108885263

里面讲的非常详细了,不过点评有改动,里面的代码也要相应的改动一下

#coding:utf-8
import re
import requests
from fontTools.ttLib import TTFont  #coding:utf-8# font = TTFont('01.woff')  # 打开本地字体文件01.ttf
# font.saveXML('01.xml')  # 将ttf文件转化成xml格式并保存到本地,主要是方便我们查看内部数据结构class Public_Spider():def __init__(self):self.url = "https://www.dianping.com/wuhan/ch10"  #目标URLself.head = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive',#cookie需要更换为你登录的Cookie'Cookie': 's_ViewType=10; _lxsdk_cuid=17b5c1c509cc8-02cf378855e65a-4373266-240000-17b5c1c509cc8; _lxsdk=17b5c1c509cc8-02cf378855e65a-4373266-240000-17b5c1c509cc8; _hc.v=236ecca1-8314-7192-b727-b6fa4cbed455.1629337965; Hm_lvt_602b80cf8079ae6591966cc70a3940e7=1629337965; fspop=test; cy=16; cye=wuhan; Hm_lpvt_602b80cf8079ae6591966cc70a3940e7=1629342377; _lxsdk_s=17b5c1c509d-0b-434-d5%7C%7C333','Host': '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/91.0.4472.106 Safari/537.36',}def Get_html(self):response = requests.get(self.url, headers=self.head).content.decode('utf-8')print(response)#去掉空格self.html = re.sub('\s', '', response)#获取字体def Get_TTF(self):#获取所有的CSS#<!-- 图文混排css -->#<link rel="stylesheet" type="text/css" href="//s3plus.meituan.net/v1/mss_0a06a471f9514fc79c981b5466f56b91/svgtextcss/cb675fe86e75080961c3c43fedc513ab.css">TTF = re.findall('<linkrel="stylesheet"type="text\/css"href="(.*?)">', self.html, re.S)[1]  # 缩小范围,店铺信息header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36", }res=requests.get('http:'+TTF,headers=header).text                                #请求cssTTF_dict={}                     #字体字典fontlist=re.findall('@font-face{(.*?)}',res,re.S)                #缩小范围for font in fontlist:TTF_name=re.findall('font-family: "PingFangSC-Regular-(.*?)"',font,re.S)[0] #TTF的类别TTF_link=re.findall(',url\("(.*?)"\);',font,re.S)[0]TTF_dict.update({TTF_name:TTF_link})shopNum=TTF_dict.get('shopNum')         #店铺ttftagName=TTF_dict.get('tagName')         #标签ttfb = requests.get('http:'+shopNum, headers=header).contentwith open('大众点评shopNum.ttf', 'wb')as f:f.write(b)b = requests.get('http:'+tagName, headers=header).contentwith open('大众点评tagName.ttf', 'wb')as f:f.write(b)font1 = TTFont('大众点评shopNum.ttf')  # 打开本地字体文件uni_list1 = font1.getGlyphOrder()[2:]  # 获取所有编码,去除前2个self.utf8List = ['&#x' + uni[3:] for uni in uni_list1]font2 = TTFont('大众点评tagName.ttf')  # 打开本地字体文件01.ttfuni_list2 = font2.getGlyphOrder()[2:]  # 获取所有编码,去除前2个self.utf8List2 = ['&#x' + uni[3:] for uni in uni_list2]self.wordlist = '1234567890店中美家馆小车大市公酒行国品发电金心业商司超生装园场食有新限天面工服海华水房饰城乐汽香部利子老艺花专东肉菜学福饭人百餐茶务通味所山区门药银农龙停尚安广鑫一容动南具源兴鲜记时机烤文康信果阳理锅宝达地儿衣特产西批坊州牛佳化五米修爱北养卖建材三会鸡室红站德王光名丽油院堂烧江社合星货型村自科快便日民营和活童明器烟育宾精屋经居庄石顺林尔县手厅销用好客火雅盛体旅之鞋辣作粉包楼校鱼平彩上吧保永万物教吃设医正造丰健点汤网庆技斯洗料配汇木缘加麻联卫川泰色世方寓风幼羊烫来高厂兰阿贝皮全女拉成云维贸道术运都口博河瑞宏京际路祥青镇厨培力惠连马鸿钢训影甲助窗布富牌头四多妆吉苑沙恒隆春干饼氏里二管诚制售嘉长轩杂副清计黄讯太鸭号街交与叉附近层旁对巷栋环省桥湖段乡厦府铺内侧元购前幢滨处向座下澩凤港开关景泉塘放昌线湾政步宁解白田町溪十八古双胜本单同九迎第台玉锦底后七斜期武岭松角纪朝峰六振珠局岗洲横边济井办汉代临弄团外塔杨铁浦字年岛陵原梅进荣友虹央桂沿事津凯莲丁秀柳集紫旗张谷的是不了很还个也这我就在以可到错没去过感次要比觉看得说常真们但最喜哈么别位能较境非为欢然他挺着价那意种想出员两推做排实分间甜度起满给热完格荐喝等其再几只现朋候样直而买于般豆量选奶打每评少算又因情找些份置适什蛋师气你姐棒试总定啊足级整带虾如态且尝主话强当更板知己无酸让入啦式笑赞片酱差像提队走嫩才刚午接重串回晚微周值费性桌拍跟块调糕'def RE_html(self):shop_info = re.findall('<liclass="">(.*?)<\/li>', self.html, re.S)  # 缩小范围,店铺信息for i in range(len(shop_info)):shop_name = re.findall('data-name="(.*?)"', shop_info[i], re.S)  # 店铺名称shop_goods = re.findall('target="_blank">(.*?)<\/a>', shop_info[i], re.S)  # 店铺推荐菜coment = re.findall('<b>(.*?)<\/b>条评价', shop_info[i], re.S)[0]  # 店铺评价数目per_capita = re.findall('人均<b>(.*?)<\/b', shop_info[i], re.S)[0]  # 人均价格tag = '|'.join(re.findall('<spanclass="tag">(.*?)<\/span>', shop_info[i], re.S))  # 标签for i in range(10):coment = coment.replace(self.utf8List[i], self.wordlist[i])  # 字体映射per_capita = per_capita.replace(self.utf8List[i], self.wordlist[i])  # 字体映射shop_comment = (''.join(re.findall('\d', coment, re.S)))  # 评价数目per_capita = (''.join(re.findall('\d', per_capita, re.S)))  # 人均消费for i in range(len(self.utf8List2)):if self.utf8List2[i] in tag:tag = tag.replace(self.utf8List2[i], self.wordlist[i])tag = tag.split('|')Tag = []  # 标签列表for tag in tag:Tag.append(''.join(re.findall('[\u4e00-\u9fa5]', tag, re.S)))#确实只匹配中文Tag = ' | '.join(Tag)print('*' * 50 + '\n' +str(shop_name[0]) + '\n'+shop_comment + '条评价\t' + '人均¥' + str(per_capita) + '\n'+str(Tag) + '\n' + #str(shop_address[0])+'推荐菜:' + str(','.join(shop_goods)))def run(self):self.Get_html()self.Get_TTF()self.RE_html()if __name__ == '__main__':example=Public_Spider()example.run()

结果

对应的转换后的字体xml:

python爬虫笔记四:大众点评店铺信息(字体反爬-静态映射)相关推荐

  1. python爬虫进阶-大众点评店铺信息(字体反爬-静态映射)

    目的 获取大众点评店铺信息 详细需求 http://www.dianping.com/shenzhen/ch10 思路解析 一 通过F12查找目标信息位置,进行分析 同理进行其他信息的解析,分析汇总 ...

  2. 大众点评(最新字体反爬)

    "仅限学术交流,如有冒犯请联系作者删除" 查看页面 看到它的字体都是一些小框框这就是所谓的字体反爬 这个时候我们如果用爬虫去爬的话爬下来的都是一些  这样的怪字符(此处可以直接 ...

  3. Python爬虫入门教程 65-100 爬虫与反爬虫的修罗场,点评网站,字体反爬之三

    爬虫与反爬虫的修罗场 哪种平台最吸引爬虫爱好者,当然是社区类的,那里容易产生原生态,高质量的数据啊, 你看微博,知乎,豆瓣爬的不亦乐乎. 评论也是产生内容的好地方 生活类点评网站 旅游类点评网站 音乐 ...

  4. python爬虫大众点评店铺信息(字体加密)

    python爬虫大众点评店铺信息(字体加密) 1.观察网站 发现部分字体加密 2.查看请求的字体文件 发现请求到了两个字体文件,把他下载打开 3. 这就是对应该网页每个字体的unicode,发现两个字 ...

  5. python爬取大众点评评论_python爬虫抓取数据 小试Python——爬虫抓取大众点评上的数据 - 电脑常识 - 服务器之家...

    python爬虫抓取数据 小试Python--爬虫抓取大众点评上的数据 发布时间:2017-04-07

  6. python爬虫实战一|大众点评网

    PS:如果不懂的可以看我的上一篇文章快速入门Python爬虫 阶段 类型 问题 需要做到 1 请求 网页数据在哪里? 发现网址url规律 2 请求 如何获取网页数据 先尝试使用requests成功访问 ...

  7. python爬虫笔记五:汽车之家贴吧信息(字体反爬-动态映射)

    学习网址: https://jia666666.blog.csdn.net/article/details/108974149 ----------------------------------- ...

  8. 大众点评店铺信息和评论内容的抓取

    大众点评评论的抓取(最新) 网页分析 大众点评爬取最主要的反爬在于SVG字体反爬,抓 了几周基本上可以批量抓取店铺基本信息和评论内容 1.店铺的信息很好抓取 基本没什么难点 店铺信息基本都可以抓下来 ...

  9. python爬虫进阶-汽车之家贴吧信息(字体反爬-动态映射)

    目的 获取汽车之家贴吧的内容信息 详细需求 汽车之家贴吧 思路解析 一.F12获取目标信息-进行分析 二.字体反爬解析-根据上一篇的文章,直接搜索关键词就好 三 根据其后的链接,保存为ttf在本地,查 ...

最新文章

  1. 徒手撸框架--实现 RPC 远程调用
  2. 微型计算机原理指令系统问题,微机原理复习题(指令系统).doc
  3. AndroidFFmpeg
  4. Opencv将处理后的视频保存出现的问题
  5. 添加和更改webstorm主题
  6. PowerBuilder 五子棋
  7. concurrent包的实现示意图
  8. linux设置法语键盘布局,法语键盘布局图
  9. html5理财计算,理财产品的收益怎么算(个人理财收益计算器)
  10. mysql 80070057_0x80070057错误原因
  11. TeamViewer:一路前行,用技术实现领域更新
  12. html 苹果适应,苹果CMS自适应模板(1)
  13. 自动驾驶创业方向有变化?如何突破技术瓶颈?
  14. PPPoE获取到32位掩码的研究
  15. 支付宝小程序申请支付宝公钥遇到的坑
  16. FLink聚合性能优化--MiniBatch分析
  17. 基于梯度优化的混沌PSO算法matlab仿真以及在磁悬浮球系统方面的应用
  18. 计算机bootmgr丢失,如何修复BOOTMGR缺少错误
  19. windows安装kerberos,及通常问题解决
  20. 学业水平考试b能上985吗_哪些大学对会考等级有要求

热门文章

  1. 全志H616芯片方案香橙派zero2开发板连接USB麦克风的使用方法
  2. 【socket】从计算机网络基础到socket编程——Windows Linux C语言 + Python实现(TCP+UDP)
  3. Mysql 报错:Incorrect string value: ‘\xE4\xBB\x98\xE6\xAC\xBE...‘ for column ‘product_pay_remark‘
  4. JavaScript中的参数传递
  5. 电荷放大器的原理与应用
  6. 使用 http://tempuri.org/ 作为默认命名空间
  7. 源中的 backports proposed security updates 什么意思?
  8. 张小平 (为奥运冠军名字作诗)
  9. mongodb数据库学习笔记
  10. A Generalized Deep Learning Approach for Evaluating Secondary Pulmonary Tuberculosis...论文总结