先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
正文
针对于不同的网站,它的反爬措施不一样,常见的反爬有User-Agent、ip代理、cookie认证,js加密等等,与之对应所保护的数据也不一样。比如某宝某猫等电商网站,那么店铺信息用户信息就比较重要了,像是某眼电影网站,它对于电影评分,票房等信息做了反爬处理。
我们今天的采集目标网站是某论坛,当对其文章的文本数据进行采集时,但是发现有字体反爬措施,就是有的文本数据被替换了。(文末附python学习资料)
一、需求分析
我们是需要爬取论坛文本数据,如下图所示:
部分网页源码展示:
我们发现文本数据是在网页源码里面的。
二、发起请求
import requests
url = "https://club.autohome.com.cn/bbs/thread/665330b6c7146767/80787515-1.html"
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"}
r = requests.get(url, headers=header)
html = etree.HTML(r.text)
content = html.xpath("//div[@class='tz-paragraph']//text()")
print(content)
然后得到如下数据(部分数据截图):
虽然在网页源码里面存在目标数据,但是通过requests简单请求之后发现有的文字被特殊字符替换掉了,此时再次查看Elenments对应的标签里的数据,如下图所示:
由图可以发现有的字被替换掉了,所以我们需要找到汉字被替换的方式,然后替换回去。
三、字体替换
我们知道系统字体一般都是xxxx.ttf的文件形式,如下图所示:
通过检查发现该网站中使用的字体对应的是myfont,这个很明显是网站为了反爬设置的自定义的字体:
了解css的伙计应该知道,网页的字体样式放在了style标签里面,如下图所示:
然后拿到url对应属性(xxx57…ttf),
//k3.autoimg.cn/g1/M02/D0/99/wKgHFVsUz1eAH_VRAABj9PS-ubk57…ttf
查看后发现是一个字体文件:
然后打开字体查看文件,把字体文件拖拽进去,如下图所示:(使用软件为FontCreator,可以查看字体的软件)
如果不想使用软件,可以打开百度字体平台网站,对应页面和软件打开是一样的
粗略一看其实发现不了什么,所以我们需要使用fontTools第三方库查看字体文件:
from fontTools.ttLib import TTFont
font = TTFont('./wKgHFVsUz1eAH_VRAABj9PS-ubk57..ttf')
print(font.getGlyphOrder())
结果如下图所示:
然后我们发现比如在先前的特殊字符表中,
这三个字应该分别对应于,大 、的、一,首先大对应的后缀为edb8,在字体文件的输出的列表中中有一个uniEDB8,对应于第六个,然后再FontCreator软件中刚好对应第六个汉字大,如下图所示:
所以规律就是这样的。
四、数据抓取
1、先把对应的汉字打出来储存在一个列表中;
word_list = ['很', '五', '多', '远', '大', '十', '更', '了', '的', '矮', '不', '少', '九', '三', '八', '一', '右', '坏', '近', '着', '呢','左', '是', '长', '六', '上', '短', '七', '高', '二', '得', '好', '下', '和', '四', '地', '小', '低']
2、把字体文件对应的特殊字符保存到另一个列表中,边进行处理;
font = TTFont('wKgHFVsUz1eAH_VRAABj9PS-ubk57..ttf')
unilist = font.getGlyphOrder()
uni_list = []
for i in unilist[1:]:
s = r'\u' + i[3:]
uni_list.append(s)
print(uni_list)
但是问题出现了,结果如下:
我们发现出现了两个反斜线,所以需要使用eval函数简单修改:
font = TTFont('wKgHFVsUz1eAH_VRAABj9PS-ubk57..ttf')
unilist = font.getGlyphOrder()
# print(unilist)
uni_list = []
for i in unilist[1:]:
# print(i)
s = eval(r"'\u" + i[3:] + "'")
# print(s)
uni_list.append(s)
3、由于之前得到的不完整的文章数据是以一个列表的形式,所以需要把他拼接为字符串,然后使用replace(old,new),进行替换:
# ....前面代码省略
html = etree.HTML(result) # result为请求网页源码
content = html.xpath("//div[@class='tz-paragraph']//text()")
contents = ''.join(content)
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
### 一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)
### 二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
![](https://img-blog.csdnimg.cn/img_convert/8c4513c1a906b72cbf93031e6781512b.png)
### 三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
![](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)
### 四、入门学习视频
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
![](https://img-blog.csdnimg.cn/afc935d834c5452090670f48eda180e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP5aqb56eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
### 五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)
### 六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)
![](https://img-blog.csdnimg.cn/img_convert/d2d978bb523c810abca3abe69e09bc1a.png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)**
![img](https://img-blog.csdnimg.cn/img_convert/e97fb7312a06c20b327a0d1013a1d806.png)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)**
[外链图片转存中...(img-yrR7eGsW-1713442500582)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**