5

Python爬取企业公开信息,包括联系方式,字体反爬实战

 2 years ago
source link: https://blog.51cto.com/cnca/5366140
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 <font color=red>666</font> 篇原创博客

Table of Contents

⛳️ 黄页 字体反爬 实战场景

本次采集的目标站点为 https://huangye88.com ,首页截图如下所示。

Python爬取企业公开信息,包括联系方式,字体反爬实战_开发者工具

在官网找到【企业黄页】选项卡,然后得到如下界面,其中涉及的信息如下,随机找到一个企业公开数据。

Python爬取企业公开信息,包括联系方式,字体反爬实战_开发者工具_02

在公司黄页详情页可以查看到联系人和联系号码。

Python爬取企业公开信息,包括联系方式,字体反爬实战_插入图片_03

这里明显看到手机字体与其它字体有所差异,通过开发者工具进行验证之后,确定存在字体反爬。

Python爬取企业公开信息,包括联系方式,字体反爬实战_开发者工具_04

保存字体文件,得到下述字体矢量图。

Python爬取企业公开信息,包括联系方式,字体反爬实战_开发者工具_05

Python爬取企业公开信息,包括联系方式,字体反爬实战_插入图片_06

结果字体的编码是固定的英文,那这字体反爬的难度就变的极低了。

⛳️ 实战编码

通过开发者工具可以找到字体文件在网页源码中,所以我们编写一下相关提取代码。

import re

import requests
import base64
from fontTools.ttLib import TTFont

url = 'https://b2b.huangye88.com/qiye1edkfp0964c7/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
}

res_text = requests.get(url=url, headers=headers).text
ba64 = re.findall('base64,(.*?)\"\)', res_text)[0]
# print(ba64)

data = base64.b64decode(ba64)
with open('./fonts/519.woff', 'wb') as f:
    f.write(data)
font = TTFont('./fonts/519.woff')
font.saveXML('./fonts/519.xml')

得到字体之后,保存的 XML 文档如下所示。

Python爬取企业公开信息,包括联系方式,字体反爬实战_xml_07

本案例已经结束。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK