pyppeteer + pyquery 学习glidedsky爬虫-字体反爬-1

参考博文:https://blog.csdn.net/weixin_42866931/article/details/110522587
练习反爬链接:http://glidedsky.com/level/crawler-font-puzzle-1
在这里插入图片描述

部分代码

	.....
		results = 0
		for page_num in range(1, 5):
			await asyncio.wait_for(page.goto(url.format(page_num)), timeout=1000)
			content = await page.content()
			results += await self.parse_detail(content)
		print(results)
	
	# 解析每一页的内容,返回总值的结果
	async def parse_detail(self, content):
		from pyquery import PyQuery
		map_coding = {'three': '3', 'eight': '8', 'four': '4', 'two': '2', 'zero': '0',
					  'seven': '7', 'six': '6', 'five': '5', 'one': '1', 'nine': '9'}
		base64_str = re.findall('base64,(.*?)\)', content)[0]
		b = base64.b64decode(base64_str)  # base64解码
		font = TTFont(io.BytesIO(b))  # 读取ttf数据
		data_map = {}  # k为html数,v为显示的数
		for k, v in enumerate(font.getGlyphOrder()[1:]):
			print(f'GlyphID(id="{k}" name="{v}")  \t|\t Key:{map_coding[v]} Value:{k}')
			data_map.update({map_coding[v]: str(k)})
		doc = PyQuery(content)
		li = (doc('div.row').text()).split('\n')
		print(f"加密:{li}")
		new_li = []
		while li:
			m, n = li.pop(0), ''
			for i in m:
				n += i.replace(i, data_map[i])
			new_li.append(n)
		result = reduce(lambda x, y: int(x) + int(y), new_li)
		print(f"解密:{new_li} 总和:{result}")
		return result

输出:

GlyphID(id="0" name="seven")  	|	 Key:7 Value:0
GlyphID(id="1" name="eight")  	|	 Key:8 Value:1
GlyphID(id="2" name="three")  	|	 Key:3 Value:2
GlyphID(id="3" name="one")  	|	 Key:1 Value:3
GlyphID(id="4" name="four")  	|	 Key:4 Value:4
GlyphID(id="5" name="five")  	|	 Key:5 Value:5
GlyphID(id="6" name="nine")  	|	 Key:9 Value:6
GlyphID(id="7" name="zero")  	|	 Key:0 Value:7
GlyphID(id="8" name="two")  	|	 Key:2 Value:8
GlyphID(id="9" name="six")  	|	 Key:6 Value:9
加密:['823', '884', '379', '357', '153', '168', '846', '865', '882', '366', '333', '850']
解密:['182', '114', '206', '250', '352', '391', '149', '195', '118', '299', '222', '157'] 总和:2635
GlyphID(id="0" name="three")  	|	 Key:3 Value:0
GlyphID(id="1" name="eight")  	|	 Key:8 Value:1
GlyphID(id="2" name="five")  	|	 Key:5 Value:2
GlyphID(id="3" name="zero")  	|	 Key:0 Value:3
GlyphID(id="4" name="seven")  	|	 Key:7 Value:4
GlyphID(id="5" name="six")  	|	 Key:6 Value:5
GlyphID(id="6" name="four")  	|	 Key:4 Value:6
GlyphID(id="7" name="two")  	|	 Key:2 Value:7
GlyphID(id="8" name="one")  	|	 Key:1 Value:8
GlyphID(id="9" name="nine")  	|	 Key:9 Value:9
加密:['837', '896', '871', '576', '073', '525', '829', '509', '595', '892', '513', '804']
解密:['104', '195', '148', '245', '340', '272', '179', '239', '292', '197', '280', '136'] 总和:2627
GlyphID(id="0" name="nine")  	|	 Key:9 Value:0
GlyphID(id="1" name="five")  	|	 Key:5 Value:1
GlyphID(id="2" name="zero")  	|	 Key:0 Value:2
GlyphID(id="3" name="six")  	|	 Key:6 Value:3
GlyphID(id="4" name="three")  	|	 Key:3 Value:4
GlyphID(id="5" name="seven")  	|	 Key:7 Value:5
GlyphID(id="6" name="two")  	|	 Key:2 Value:6
GlyphID(id="7" name="one")  	|	 Key:1 Value:7
GlyphID(id="8" name="eight")  	|	 Key:8 Value:8
GlyphID(id="9" name="four")  	|	 Key:4 Value:9
加密:['092', '579', '601', '519', '523', '516', '48', '591', '556', '025', '634', '506']
解密:['206', '150', '327', '170', '164', '173', '98', '107', '113', '261', '349', '123'] 总和:2241
GlyphID(id="0" name="nine")  	|	 Key:9 Value:0
GlyphID(id="1" name="three")  	|	 Key:3 Value:1
GlyphID(id="2" name="zero")  	|	 Key:0 Value:2
GlyphID(id="3" name="four")  	|	 Key:4 Value:3
GlyphID(id="4" name="two")  	|	 Key:2 Value:4
GlyphID(id="5" name="five")  	|	 Key:5 Value:5
GlyphID(id="6" name="one")  	|	 Key:1 Value:6
GlyphID(id="7" name="six")  	|	 Key:6 Value:7
GlyphID(id="8" name="seven")  	|	 Key:7 Value:8
GlyphID(id="9" name="eight")  	|	 Key:8 Value:9
加密:['088', '363', '469', '051', '353', '067', '326', '78', '434', '375', '059', '394']
解密:['299', '171', '370', '256', '151', '278', '147', '89', '313', '185', '250', '103'] 总和:2612
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷心兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值