• 中文起点,Python 字体反爬实战案例,再一篇~



    你正在阅读 【梦想橡皮擦】 的博客
    阅读完毕,可以点点小手赞一下
    发现错误,直接评论区中指正吧
    橡皮擦的第 665 篇原创博客

    畅销专栏,打折促销中~
    ⭐️ 《Python 爬虫 120》⭐️

    ⛳️ 起点 实战场景

    本次采集的案例是点起中文,你可以随机打开一本目标书籍,检查一下网络请求中是否存在字体文件响应数据。

    https://book.qidian.com/info/2952453/#Catalog
    

    字体加密位置呈现的效果如下图所示。

    在这里插入图片描述

    编写网页爬取代码,查看其字体位置使用的编码。

    import requests
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36",
        "Origin": 'https://book.qidian.com',
        "referer": "https://book.qidian.com"
    }
    
    response = requests.get(url='https://book.qidian.com/info/2952453/',headers=headers)
    response.encoding = 'utf-8'
    
    print(response.text[:20000])
    

    截取源码部分,查看编码内容。

    在这里插入图片描述

    同时下载本页面的字体文件,用工具打开之后,发现字体编码图形顺序没有什么变化,这对于后续我们解决反爬就变得非常简单了。

    在这里插入图片描述

    接下来读取和解构一下这个字体文件,在其中找到能用的数据。

    from fontTools.ttLib import TTFont
    
    import io
    
    file_woff = './fonts/YOfzYtjr.woff'
    with open(file_woff, 'rb') as font_file:
        font = TTFont(io.BytesIO(font_file.read()))  # 转换成字体对象
    #字体映射关系
    font_cmap = font['cmap'].getBestCmap()
    print(font_cmap)
    

    输出的信息为:

    {100418: 'two', 100420: 'seven', 100421: 'five', 100422: 'nine', 100423: 'six', 100424: 'three', 100425: 'four', 100426: 'zero', 100427: 'one', 100428: 'period', 100429: 'eight'}
    

    接下来在回头去看一下刚才字体反爬位置的特殊字符与字体编码。
    网页特殊字符

    𘞱𘞯𘞴𘞲𘞱𘞭
    

    字体编码

    {100269: 'nine', 100271: 'five', 100272: 'three', 100273: 'six', 100274: 'period', 100275: 'one', 100276: 'eight', 100277: 'two', 100278: 'four', 100279: 'seven', 100280: 'zero'}
    

    得到最终的结果。

    &#100273 -> 6


    右下角有个大拇指,点赞的漂亮加倍

    欢迎大家订阅专栏:
    ⭐️ ⭐️ 《Python 爬虫 120》⭐️ ⭐️

  • 相关阅读:
    Beyond Compare3 注册密钥和添加到右键菜单
    DLL文件无法删除怎么解决
    英语单词学习方法
    JSP+Servlet+JavaBean
    把Java程序打包成jar文件包并执行
    把java文件打包成.jar (jar命令详解)
    Java程序打包成jar包
    JDK
    使用JDK开发Servlet程序
    Jdk和Jre目录和三个lib目录说明----外部扩展jar包servlet,mysql,oracle等
  • 原文地址:https://www.cnblogs.com/happymeng/p/16291861.html
Copyright © 2020-2023  润新知