python爬虫爬取58网站数据_Python爬虫,爬取58租房数据 字体反爬

本文介绍了如何使用Python爬虫应对58同城租房页面的字体反爬策略。通过下载字体文件,解码并替换乱码内容,成功抓取福州区域的房源信息,并将数据保存为Excel文件。
摘要由CSDN通过智能技术生成

Python爬虫,爬取58租房数据

这俩天项目主管给了个爬虫任务,要爬取58同城上福州区域的租房房源信息。因为58的前端页面做了base64字体加密所以爬取比较费力,前前后后花了俩天才搞完。

项目演示与分析

使用python的request库和字体反爬文件,通过替换来实现爬取,最后保存 为excel文件

演示:

1642959-20200812021214008-1757503326.png

分析:

1.首先 直接从58爬取数据可以很明显的看到所有的数字都被替换成了乱码

1642959-20200812021242078-238906953.png

2.我们打开页面右键点击查看源代码,可以发现所有的数字都变成了一串诡异的编码,而这些编码似乎又存在某种联系

1642959-20200812021249959-1559013002.png

3.我们翻到代码的最前端发现一连串的字母,这些其实就是base64加密后的字体文件信息,可以进行正则匹配提取,然后解码写入字体文件。

1642959-20200812021256149-34395061.png

4.我们通过输出.xml和字体库文件可以分析编码规律

import requestsimport refrom fontTools.ttLib import TTFont#下载字体文件url="https://fz.58.com/chuzu/pn1"

response = requests.get(url=url.format(page=1),headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'})

font_base64 = re.findall("base64,(AA.*AAAA)", response.text)[0] # 找到base64编码的字体格式文件

font = base64.b64decode(font_base64)

with open('ztk01.ttf', 'wb') as tf:

tf.write(font)font_object = TTFont('58font2.ttf')font_object.saveXML('58font2.xml')

5.通过对比字体库文件和输出的xml内容,glyph00007对应6,glyph00006对应5。可以很明显的发现规律:对每一个glyph0000x对应数字x-1

1642959-20200812021305085-2045350548.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值