亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > python爬蟲破解字體加密案例詳解

python爬蟲破解字體加密案例詳解

熱門標簽:qt百度地圖標注 地圖地圖標注有嘆號 電銷機器人系統(tǒng)廠家鄭州 400電話申請資格 正安縣地圖標注app 舉辦過冬奧會的城市地圖標注 遼寧智能外呼系統(tǒng)需要多少錢 螳螂科技外呼系統(tǒng)怎么用 阿里電話機器人對話

本次案例以爬取起小點小說為例

案例目的:

通過爬取起小點小說月票榜的名稱和月票數(shù),介紹如何破解字體加密的反爬,將加密的數(shù)據(jù)轉(zhuǎn)化成明文數(shù)據(jù)。

程序功能:

輸入要爬取的頁數(shù),得到每一頁對應(yīng)的小說名稱和月票數(shù)。

案例分析: 找到目標的url:

(右鍵檢查)找到小說名稱所在的位置:

通過名稱所在的節(jié)點位置,找到小說名稱的xpath語法:

(右鍵檢查)找到月票數(shù)所在的位置:

由上圖發(fā)現(xiàn),檢查月票數(shù)據(jù)的文本,得到一串加密數(shù)據(jù)。

我們通過xpathhelper進行調(diào)試發(fā)現(xiàn),無法找到加密數(shù)據(jù)的語法。因此,需要通過正則表達式進行提取。

通過正則進行數(shù)據(jù)提取。

正則表達式如下:

得到的加密數(shù)據(jù)如下:

破解加密數(shù)據(jù)是本次案例的關(guān)鍵:

既然是加密數(shù)據(jù),就會有加密數(shù)據(jù)所對應(yīng)的加密規(guī)則的Font文件。
通過找到Font字體文件中數(shù)據(jù)加密文件的url,發(fā)送請求,獲取響應(yīng),得到加密數(shù)據(jù)的woff文件。

注:我們需要的woff文件,名稱與加密月票數(shù)前面的class屬性相同。

如下圖,下載woff文件:

找到16進制的數(shù)字對應(yīng)的英文數(shù)字。

其次,我們需要通過第三方庫TTFont將文件中的16進制數(shù)轉(zhuǎn)換成10進制,將英文數(shù)字轉(zhuǎn)換成阿拉伯數(shù)字。如下圖:

解析出每個加密數(shù)據(jù)對應(yīng)的對應(yīng)的月票數(shù)的數(shù)字如下:

注意:

由于我們在上面通過正則表式獲得的加密數(shù)據(jù)攜帶特殊符號

因此解析出月票數(shù)據(jù)中的數(shù)字之后,除了將特殊符號去除,還需把每個數(shù)字進行拼接,得到最后的票數(shù)。

最后,通過對比不同頁的url,找到翻頁的規(guī)律:



對比三個不同url發(fā)現(xiàn),翻頁的規(guī)律在于參數(shù)page

所以問題分析完畢,開始代碼:

import requests
from lxml import etree
import re
from fontTools.ttLib import TTFont
import json

if __name__ == '__main__':
  # 輸入爬取的頁數(shù)、
  pages = int(input('請輸入要爬取的頁數(shù):')) # eg:pages=1,2
  for i in range(pages): # i=0,(0,1)
    page = i+1  # 1,(1,2)
    # 確認目標的url
    url_ = f'https://www.qidian.com/rank/yuepiao?page={page}'
    # 構(gòu)造請求頭參數(shù)
    headers = {
      'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'
    }
    # 發(fā)送請求,獲取響應(yīng)
    response_ = requests.get(url_,headers=headers)
    # 響應(yīng)類型為html問文本
    str_data = response_.text
    # 將html文本轉(zhuǎn)換成python文件
    py_data = etree.HTML(str_data)
    # 提取文本中的目標數(shù)據(jù)
    title_list = py_data.xpath('//h4/a[@target="_blank"]/text() ')
    # 提取月票數(shù),由于利用xpath語法無法提取,因此換用正則表達式,正則提取的目標為response_.text
    mon_list = re.findall('/style>span class=".*?">(.*?)/span>/span>',str_data)
    print(mon_list)
    # 獲取字體反爬woff文件對應(yīng)的url,xpath配合正則使用
    fonturl_str = py_data.xpath('//p/span/style/text()')
    font_url = re.findall(r"format\('eot'\); src: url\('(.*?)'\) format\('woff'\)",str_data)[0]
    print(font_url)
    # 獲得url之后,構(gòu)造請求頭獲取響應(yīng)
    headers_ = {
      'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
      'Referer':'https://www.qidian.com/'
    }
    # 發(fā)送請求,獲取響應(yīng)
    font_response = requests.get(font_url,headers=headers_)
    # 文件類型未知,因此用使用content格式
    font_data = font_response.content
    # 保存到本地
    with open('加密font文件.woff','wb')as f:
      f.write(font_data)
    # 解析加密的font文件
    font_obj = TTFont('加密font文件.woff')
    # 將文件轉(zhuǎn)成明文的xml文件
    font_obj.saveXML('加密font文件.xml')
    # 獲取字體加密的關(guān)系映射表,將16進制轉(zhuǎn)換成10進制
    cmap_list = font_obj.getBestCmap()
    print('字體加密關(guān)系映射表:',cmap_list)
    # 創(chuàng)建英文轉(zhuǎn)英文的字典
    dict_e_a = {'one':'1','two':'2','three':'3','four':'4','five':'5','six':'6',
          'seven':'7','eight':'8','nine':'9','zero':'0'}
    # 將英文數(shù)據(jù)進行轉(zhuǎn)換
    for i in cmap_list:
      for j in dict_e_a:
        if j == cmap_list[i]:
          cmap_list[i] = dict_e_a[j]
    print('轉(zhuǎn)換為阿拉伯數(shù)字的映射表為:',cmap_list)
    # 去掉加密的月票數(shù)據(jù)列表中的符號
    new_mon_list = []
    for i in mon_list:
      list_ = re.findall(r'\d+',i)
      new_mon_list.append(list_)
    print('去掉符號之后的月票數(shù)據(jù)列表為:',new_mon_list)
    # 最終解析月票數(shù)據(jù)
    for i in new_mon_list:
      for j in enumerate(i):
        for k in cmap_list:
          if j[1] == str(k):
            i[j[0]] = cmap_list[k]
    print('解析之后的月票數(shù)據(jù)為:',new_mon_list)
    # 將月票數(shù)據(jù)進行拼接
    new_list = []
    for i in new_mon_list:
      j = ''.join(i)
      new_list.append(j)
    print('解析出的明文數(shù)據(jù)為:',new_list)
    # 將名稱和對應(yīng)的月票數(shù)據(jù)放進字典,并轉(zhuǎn)換成json格式及進行保存
    for i in range(len(title_list)):
      dict_ = {}
      dict_[title_list[i]] = new_list[i]
      # 將字典轉(zhuǎn)換成json格式
      json_data = json.dumps(dict_,ensure_ascii=False)+',\n'
      # 將數(shù)據(jù)保存到本地
      with open('翻頁起小點月票榜數(shù)據(jù)爬取.json','a',encoding='utf-8')as f:
        f.write(json_data)

爬取了兩頁的數(shù)據(jù),每一頁包含20個數(shù)據(jù)

執(zhí)行結(jié)果如下:

到此這篇關(guān)于python爬蟲破解字體加密案例詳解的文章就介紹到這了,更多相關(guān)python爬蟲破解字體加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • scrapy在python爬蟲中搭建出錯的解決方法
  • scrapy-redis分布式爬蟲的搭建過程(理論篇)
  • Python爬蟲代理池搭建的方法步驟
  • windows下搭建python scrapy爬蟲框架步驟
  • windows7 32、64位下python爬蟲框架scrapy環(huán)境的搭建方法
  • 使用Docker Swarm搭建分布式爬蟲集群的方法示例
  • 快速一鍵生成Python爬蟲請求頭
  • 一文讀懂python Scrapy爬蟲框架
  • 快速搭建python爬蟲管理平臺

標簽:濟源 合肥 淘寶好評回訪 興安盟 阜新 信陽 昭通 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python爬蟲破解字體加密案例詳解》,本文關(guān)鍵詞  python,爬蟲,破解,字體,加密,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python爬蟲破解字體加密案例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于python爬蟲破解字體加密案例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    天天色色网| 日日夜人人澡人人澡人人看免| 精品久久久久久中文字幕一区 | 久久成人亚洲| 九九干| 欧美电影免费| 国产视频一区二区三区四区| 九九精品影院| 国产福利免费视频| 日日日夜夜操| 精品国产一区二区三区精东影业| 精品毛片视频| 韩国三级一区| 麻豆网站在线看| 欧美18性精品| 成人av在线播放| 国产网站免费| 精品视频在线观看免费| 欧美日本免费| 国产美女在线一区二区三区| 韩国毛片免费大片| 九九免费高清在线观看视频| 九九精品久久| 99久久网站| 久久99中文字幕| 午夜欧美成人久久久久久| 免费一级片网站| 黄视频网站在线免费观看| 精品在线视频播放| 九九久久99综合一区二区| 精品久久久久久综合网| 一级女人毛片人一女人| 日韩免费片| 日本伦理黄色大片在线观看网站| 精品国产香蕉伊思人在线又爽又黄| 午夜在线观看视频免费 成人| 亚洲第一视频在线播放| 欧美激情伊人| 精品在线观看国产| 九九久久99综合一区二区| 美女免费精品高清毛片在线视| 欧美日本二区| 久久久久久久免费视频| 日本特黄特黄aaaaa大片| 亚洲女人国产香蕉久久精品| 免费的黄视频| 九九精品久久| 久久99中文字幕| 四虎影视久久| 成人高清视频免费观看| 四虎影视库国产精品一区| 国产高清在线精品一区二区| 国产欧美精品| 日本伦理片网站| 九九免费精品视频| 久久国产影院| 精品久久久久久影院免费| 色综合久久天天综合观看| 精品久久久久久中文字幕2017| 四虎影视久久久| 国产视频一区二区在线观看| 国产91视频网| 亚欧成人毛片一区二区三区四区| 国产91精品一区| 超级乱淫黄漫画免费| 国产视频一区在线| 精品视频一区二区三区| 色综合久久手机在线| 麻豆系列 在线视频| 91麻豆精品国产高清在线| 日本特黄一级| 国产高清在线精品一区二区| 国产亚洲免费观看| 可以在线看黄的网站| 日本在线www| 欧美一区二区三区在线观看| 精品在线免费播放| 亚欧成人毛片一区二区三区四区| 高清一级做a爱过程不卡视频| 天天做人人爱夜夜爽2020| 美女免费精品视频在线观看| 沈樵在线观看福利| 高清一级片| 日韩字幕在线| 日韩男人天堂| 国产成a人片在线观看视频| 国产一区二区精品久| 国产一区二区精品尤物| 超级乱淫黄漫画免费| 久久福利影视| 国产极品精频在线观看| 日韩中文字幕在线亚洲一区| 国产成人女人在线视频观看| 国产不卡在线播放| 色综合久久天天综合观看| 国产欧美精品| 四虎影视久久久| 国产一区二区精品久| 97视频免费在线| 一级女性大黄生活片免费| 久草免费资源| 国产不卡福利| 成人影院久久久久久影院| 精品国产亚洲人成在线| 国产一区二区精品尤物| 亚洲女人国产香蕉久久精品 | 午夜久久网| 你懂的日韩| 欧美爱爱动态| 国产高清视频免费| 精品视频在线观看视频免费视频| a级黄色毛片免费播放视频 | 国产不卡在线看| 黄色短视频网站| 国产原创视频在线| 日韩在线观看视频黄| 精品视频一区二区三区| 天天色色色| 亚洲精品中文一区不卡| 高清一级做a爱过程不卡视频| 九九精品久久久久久久久| 91麻豆国产级在线| 欧美大片毛片aaa免费看| 亚洲女人国产香蕉久久精品 | a级黄色毛片免费播放视频 | 欧美电影免费看大全| 亚洲精品久久久中文字| 亚洲女人国产香蕉久久精品 | 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 一本高清在线| 日本乱中文字幕系列| 麻豆网站在线免费观看| 一a一级片| 香蕉视频一级| 久久福利影视| 精品视频在线观看一区二区 | 日韩av东京社区男人的天堂| a级毛片免费观看网站| 国产伦理精品| 久久国产精品只做精品| 亚洲第一页乱| 在线观看导航| 国产成人女人在线视频观看| 韩国毛片免费| 国产网站麻豆精品视频| 欧美激情一区二区三区中文字幕| 国产网站在线| 午夜在线亚洲| 精品国产一区二区三区国产馆| 亚洲精品久久久中文字| 欧美国产日韩精品| 日日夜夜婷婷| 一级女性大黄生活片免费| 精品国产一区二区三区久| 久久成人性色生活片| 国产高清视频免费| 精品国产一区二区三区久| 在线观看导航| 欧美一区二区三区在线观看| 日本特黄特色aaa大片免费| 九九精品在线播放| 日韩在线观看视频网站| 黄视频网站免费观看| 精品国产一区二区三区久| 99久久精品国产高清一区二区 | 精品视频在线观看视频免费视频| 国产网站在线| 国产精品自拍在线| 韩国三级香港三级日本三级la| 日本免费看视频| 黄视频网站在线看| 日韩在线观看视频网站| 沈樵在线观看福利| 国产不卡在线播放| 国产麻豆精品| 国产亚洲免费观看| 精品视频一区二区三区| 国产成a人片在线观看视频| 精品国产香蕉在线播出| 日日日夜夜操| 日本免费区| 日日日夜夜操| 欧美爱爱动态| 亚洲 欧美 91| 国产精品自拍在线| 国产一级强片在线观看| 精品久久久久久中文字幕2017| 美女免费精品视频在线观看| 国产91视频网| 成人免费高清视频| 国产a视频| 国产视频网站在线观看| 99色精品| 天天做日日干| 99热热久久| 日韩字幕在线| 亚洲第一色在线| 国产一级强片在线观看| 成人a级高清视频在线观看| 日韩在线观看视频网站|