解决网站爬取时,内容类似:$#x12E0;样式,且每次字体文件变化。
下载FontCreator

用FontCreator打开base.woff.查看对应字体关系

初始化时将对应关系写入字典中。

#!/usr/bin/env python
# coding:utf-8
import requests
import re
import os
from fontTools.ttLib import TTFont
'''
遇到不懂的问题?Python学习交流群:821460695满足你的需求,资料都已经上传群文件,可以自行下载!
'''
#下载字体
class MaoYan(object):def __init__(self):self.url = 'http://maoyan.com/films/1198214'self.headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"}self.base_num = {}  # 编号—数字self.base_obj = {}  # 编号—对象# base.woff 为当前网站下载的一个字体self.base_font_file = TTFont('./fonts/base.woff')# 需要先下载字体编辑软件(FontCreator),以便查看对应关系self.base_num["uniF3BA"] = "0"self.base_num["uniF2A9"] = "1"self.base_num["uniE6A5"] = "2"self.base_num["uniF680"] = "3"self.base_num["uniE69C"] = "4"self.base_num["uniE710"] = "5"self.base_num["uniE07D"] = "6"self.base_num["uniE5A7"] = "7"self.base_num["uniEC7A"] = "8"self.base_num["uniE2A3"] = "9"for key in self.base_num:self.base_obj[key] =self.base_font_file['glyf'][key]def baseobj(self):for key in self.base_num:self.base_obj[key] =self.base_font_file['glyf'][key]  # 获得woff内编号对应的字体对象return self.base_obj# 发送请求获得响应def get_html(self, url):response = requests.get(url, headers=self.headers)return response.contentdef create_font(self, re_font_file):# 列出已下载文件file_list = os.listdir('./fonts')# 判断是否已下载if re_font_file not in file_list:print('不在字体库中, 下载:', re_font_file)url = 'http://vfile.meituan.net/colorstone/' + re_font_filenew_file = self.get_html(url)with open('./fonts/' + re_font_file, 'wb') as f:f.write(new_file)# 打开字体文件,创建 self.font_file属性self.font_file = TTFont('./fonts/' + re_font_file)def get_num_from_font_file(self, re_star):newstar = re_star.upper().replace("&#X", "uni")realnum = newstar.replace(";", "")numlist = realnum.split(".")# gly_list = self.font_file.getGlyphOrder() #uni列表['glyph00000', 'x', 'uniF680', 'uniE2A3', 'uniE710', 'uniE69C', 'uniEC7A', 'uniF2A9', 'uniE5A7', 'uniE07D', 'uniE6A5', 'uniF3BA']star_rating = []for hax_num in numlist:font_file_num = self.font_file['glyf'][hax_num]for key in self.baseobj():if font_file_num == self.base_obj[key]:star_rating.append(self.base_num[key])# 星级评分待优化,暂不支持10.0,star_rating = star_rating[0]+"."+star_rating[1]return star_ratingdef start_crawl(self):html = self.get_html(self.url).decode('utf-8')# 正则匹配字体文件re_font_file = re.findall(r'vfile\.meituan\.net\/colorstone\/(\w+\.woff)', html)[0]self.create_font(re_font_file)# 正则匹配星级评分re_star_rating = re.findall(r'<span class="index-left info-num ">\s+<span class="stonefont">(.*?)</span>\s+</span>', html)[0]star_rating = self.get_num_from_font_file(re_star_rating)print("星级评分:", star_rating)if __name__ == '__main__':m = MaoYan()m.start_crawl()

python反反爬,爬取猫眼评分相关推荐

  1. Python3简单爬虫:爬取猫眼评分top100电影

    Python3:用xpath库爬取猫眼评分top100电影 在看<Python3 网络爬虫开发实战中>一书学习时,书中第三章例子用re正则匹配来爬取电影的所需数据,虽然爬取速度快,效率好, ...

  2. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  3. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  4. Python爬取猫眼评分9.5的《海王》的3万条评论

    前言 2018年12月7日,本年度最后一部压轴大片<海王>如期上映,目前猫眼评分达到9.5分,靠着1.5亿美金的制作成本,以小博大,目前票房接近9亿,本文爬取了猫眼3w+条评论,多方位带你 ...

  5. python+requests+re匹配抓取猫眼上映电影信息

    python+requests抓取猫眼中上映电影,re正则匹配获取对应电影的排名,图片地址,片名,主演及上映时间和评分 import requests import re, json def get_ ...

  6. 爬取猫眼评分前100的电影

    这是简单的聚焦爬虫,爬取猫眼前100的电影,刚学爬虫时写的,没有什么困难的东西,但是如果以后再有新人看到的话,希望能对你产生一点点的帮助,具体代码和注释如下: import requests from ...

  7. python战反爬虫:爬取猫眼电影数据 (一)(Requests, BeautifulSoup, MySQLdb,re等库)

    姓名:隋顺意 博客:Sui_da_xia 微信名:世界上的霸主 本篇文章未涉及猫眼反爬,主要介绍爬取无反爬内容,战反爬内容请去 python战反爬虫:爬取猫眼电影数据 (二)(Requests, Be ...

  8. python战反爬虫:爬取猫眼电影数据 (一)

    非常荣幸邀请到 赛迪人工智能大赛(简称AI世青赛)全球总决赛银奖的获得者 隋顺意 小朋友为本公众号投稿,隋小朋友虽然小小年纪,但编程能力已经比大多数大学生强非常多了,欢迎大家关注,捧场. 姓名:隋顺意 ...

  9. python爬取猫眼遇到动态字体反爬

    前一段时间,爬取了58同城,发现当时的网页对数字有字体反爬虫,然后废了九牛二虎之力找到了规律,终于破解了反爬虫,后来发现猫眼的这个网页虽然使用了字体反爬,但是和原来的58同城还是有很大的差别,后来了解 ...

最新文章

  1. Linux下基本栈溢出攻击【转】
  2. php 对象方法作为参数,在C++中对象如何作为参数传递和返回?(代码示例)
  3. shiro框架_Shiro安全框架(下)
  4. 【竞赛题解】第22次CCF计算机软件能力认证 B
  5. 男人女人小孩共32人c语言,C编程核心要点,你确信你会C语言?看完之后,男人沉默,女人流泪...
  6. 手机连接投影机的步骤_投影机安装过程详解
  7. python距离向量路由算法_互联网中常用路由协议,路由协议基础,一分钟了解下...
  8. python 使用整数编码字符串的值
  9. java openSession和getCurrentSession的比较
  10. day03【后台】管理员维护
  11. 编译android源码的make命令解析
  12. 关于PCB板热设计的学习总结
  13. c语言必背代码百度云,c语言初学必背代码.docx
  14. [转]FastDb介绍
  15. C++之类和对象基础认知
  16. 小孩用的台灯什么样的品牌好?2023儿童台灯灯具品牌排行榜
  17. fedora7 WIFI驱动的加载与wpa_supplicant的配置
  18. 计算机视觉要掌握哪些知识,学习了哪些知识,计算机视觉才算入门?
  19. Git工具和CODING平台
  20. 字节跳动的面试算法,实在太变态了

热门文章

  1. idr寄存器、_STM32 GPIO寄存器 IDR ODR BSRR BRR
  2. epoll 为什么用红黑树?
  3. zabbix与nagios对比
  4. 性价比高的/便宜又好用的SSL证书品牌有哪些?
  5. RAID技术全解图解-RAID0、RAID1、RAID5、RAID100【转】
  6. 哈工大ltp词性标注列表和ICTCLAS词性列表
  7. 重建堆栈指南及其自动化实现
  8. Citrix Receiver for Linux安装和cert证书添加解决SSL错误
  9. 获取选股宝7x24小时数据
  10. Mac上用spotlight搜索输入几个字母后闪退