您现在的位置是: 网站首页> 学习笔记> 爬虫 爬虫
字体反爬1
2021-04-11 [字体反爬] 4633人已围观
import requests
import re
import io
import base64
from lxml.html import etree
from fontTools.ttLib import TTFont
from concurrent.futures import ThreadPoolExecutor
url = "http://www.glidedsky.com/level/web/crawler-font-puzzle-2?page={}"
headers = {
}
total_values=[]
def get_code_list(response):
'''
处理字体文件,获取字体文件中数字与编码对应关系
:param response: 请求响应文本
:return: 字体文件中数字与编码对应关系字典,字典key为编码,val为数字
'''
# 从网页中提取base64编码的字体数据
font_face = re.search('src: url\(data:font;charset=utf-8;base64,(.*)\) format\("truetype"\);', response.text).group(
1)
# 转化为可操作的字体文件
ttf = TTFont(io.BytesIO(base64.b64decode(font_face)))
# 获取字体文件中数字与编码对应关系
code_list = ttf.getGlyphOrder()[1:]
return code_list
def parse(page):
print('page: {}'.format(page))
response = requests.request("GET", url.format(page), headers=headers)
if response.status_code != 200:
with open('error_url.txt', 'a') as f:
f.write(response.url + '\n')
print(response.text)
# 虚值与真实值对应关系
code_list = get_code_list(response)
response = etree.HTML(response.text)
try:
values = []
for item in response.xpath('//div[@class="card-body"]//div[@class="col-md-1"]/text()'):
if not item.strip():
print('item--> ', item.strip)
v = list(map(lambda x: 'uni'+ str(x).upper(), item.strip().encode('unicode-escape').decode().split('\\u')[1:]))
ret = int(''.join([str(code_list.index(_)) for _ in v]))
values.append(ret)
return values
except Exception as e:
print(e)
return parse(page)
with ThreadPoolExecutor(max_workers=10) as thread_pool:
page_lsit = range(1, 1001)
ret = thread_pool.map(parse, page_lsit)
sum_value = 0
for page_lsit in ret:
print(page_lsit)
sum_value += sum(page_lsit)
print(sum_value)
# sum_val = 0
# for page in range(1, 1001):
# v = parse(page)
# sum_val += sum(v)
# print(v)
#
# print(sum(sum_val))
上一篇:base64字体存为本地文件
下一篇:css反爬
相关文章
文章评论
暂无评论添加评论
点击排行
本栏推荐
标签云
热评文章
- django使用qq邮箱发送邮件
- mysql8设置数据库远程连接
- pip修改下载源为国内源
- win10看不到win7共享的文件夹的解决方法
- SQLyog连接 Mysql 8.0.11 报error no.1251- Client does not support authentic...
- 使用Oracel Net Nanager配置Oracle数据库远程访问
- 将anaconda的下载源切换为国内的源
- Python+selenium+firefox设置代理IP
- selenium+firefox+js实现动态设置firefox浏览器代理IP
- scrapy文件下载(高新技术企业认定网)
- Python调用JS代码
- Chrome浏览器的overrides的使用
站点信息
- 建站时间:2021-01-01
- 网站程序:Django 3.1.2
- 文章统计:53篇
- 文章评论:36条
- 统计数据:51La