更多课程 选择中心

Python培训
美国上市教育机构

400-111-8989

Python培训

Python爬虫学习知识图谱

  • 发布:Python培训
  • 来源:知识
  • 时间:2017-10-23 16:19

前两天朋友问我微信公众号怎么那么久没有更新,让我觉得心暖且惭愧,实在是这几周一直在死磕python爬虫,妄图用它爬取天朝互联网巨头的VIP视屏资料。

而今天,终于成功了!在此清理一下这段时间的技能学习,描绘一下爬虫的知识图谱。

提到python爬虫,你会想到什么呢?网上铺天盖地的requests还是bs4?然而在学习这些第三方库之前,以下的基础学习更加重要。

HTTP协议基础

首先,学习一下HTTP超文本传输协议基础,这部分很重要,诚然,网上视频教程往往只需要一句简单的requests.get(url)就可以搞定,但是实际上,你可以需要设置cookie模拟登陆状态,还有,那些提交密码才能访问的页面往往使用post方式,这还是很简单的。

再比如,想在公司网络上使用爬虫,可能需要设置代理服务器,而且还要向这个代理服务器提供你的账户和密码才能成功访问外网。而访问内网的时候,很多公司启用了http base认证,需要设置http base认证信息。

这还不够,对于公司自签发的网站,很可能还需要SSL认证。网上什么禁用SSL的答案倒是不少,但是遇到专业的大公司,如果禁用它就可能返回错误信息。

总之,想要拿到状态码为200的response,请务必认真学习HTTP基础,如有精力深入一下更佳,它决定了你能否成为爬虫高手还是停留在菜鸟级别。

Javascript和ajax

然后,了解一下网站前端技术,包括Javascript和ajax。对于Javascript,如果你有编程基础,粗略了解它也很容易。它在语法层面上,和C语言很相像。Javascript定义网页的行为,和用户进行交互,增强用户体验

此外,还要了解一下ajax技术,目前ajax广泛应用于网页开发,也是为了增强用户体验。比如,我们在拉到网页最底端时滚动鼠标,就会加载新的内容,而不需要刷新整个网页。

学习这部分的内容,是因为在爬取网站资源时,得到的page source所包含的内容,和你在网页上看到的内容根本不一样。

例如你想爬取一系列视频,网页上明明显示了视频列表,爬取到的page source里面却压根看不到,因为它是使用ajax技术实现的。但是ajax技术,实质上也是向网站请求资源,这时就需要分析列表所在的真实地址。

等打开每个视频的url地址以后,却发现其网页也是使用javascript渲染而成的,于是,又需要分析真正的视频地址。

现在很多网站的视频,看起来是一个完整的视频,其实是由好几个小的视频拼接而成,而它们之间的拼接,往往也是使用javascript或者ajax技术实现。

插一句,对爬取的资源进行分析的时候,Chrome开发者工具或者Fiddler都是很好的工具。

如果没有掌握好这部分内容,那么你只能拿到一个写满了JS代码的页面源码,根本无法追踪自己想要的真正资源。

selenium

如果对技术没有追求,不想学什么HTTP协议基础,觉得javascript和ajax很麻烦,懒得分析网站资源,只是业余爬着玩玩,对效率没有追求,那么可以学习一下selenium,它原本是一款自动化测试库,但是也用于业余的玩家来爬取一些资源。

如果你被网站强大的反爬技术弄得一脸懵逼,或者被JS和ajax绕的头晕脑胀,那么就用selenium吧,它模拟人类打开浏览器,输入网址、填写账户和密码、点击提交等各种操作,我愿意叫它傻瓜爬取库,不是它傻,是用它的人傻。。。这样你基本可以不需要学习前面所述的HTTP基础和JS。

当然,它的劣势也是明显的,对CPU和内存的开销大,速度慢,只适用于小资源爬取。因此,请容许我再一次鄙视一下那些用selenium来爬取资源的人类。事实上,越难爬取到的资源,对技术的要求就越高~

HTML和CSS

接下来,了解一下HTML和CSS。HTML定义网页的内容,CSS则相当于word中的样式,其决定网页以什么样的排版呈现,了解它们,有助于你在获取到网站资源后,更快速地对所需要的内容进行解析和提取。

甚至,有些网站在反爬方面可能在CSS上做了一些手脚例如元素隐藏化,而填写了被隐藏元素相关信息的则可以判断是爬虫。

bs4和正则

接着,直到解析和提取HTML这部分,才会需要学习bs4。虽然bs4大名鼎鼎,但是由于网页源码的不规范性,其实正则才是王道。

关于正则的函数学习也很简答,几个简单的函数基本就可以实现绝大部分的爬取需求。如果你只是学着玩玩,这已经够了。

如果你要走专业方向的爬虫工程师,那么务必学好正则表达式,因为专业人员爬取的内容往往是大数据级别的,此时效率非常重要,写一个高效的正则表达式很必要。

我曾经在一个知名网站学习python的时候,讲师讲到正则时,居然写了一个灾难性回溯的正则表达式,简直不忍直视。

sql和MongoDB

爬取到的内容要存储,同样,如果是小数据,用txt或者excel就可以搞定,但是如果涉及到大数据,那么需要了解一下sql和MongoDB。

多线程编程

此外,如果是大数据爬取,还需要补充多线程编程知识,以便提高爬取效率。

以上,为我目前学习爬虫所走过的学习路线图,希望对感兴趣的朋友有用~

最后,请记住,尝试用以上学习到的内容,去爬取那些互联网巨头的网页资源,尤其是什么VIP资源之类的。为什么要选互联网巨头,因为它们的JS和ajax技术更成熟,反爬技术更成熟,而当你的爬虫可以在各大网站游刃有余的时候,恭喜你,即使你不是高手,也已经脱离菜鸟的行列啦~~~

最后的最后,即使你已经可以用你的爬虫和任意网站华山论剑决战京城,更要控制一下你的爬取速度,不要妨碍网站的正常运行,这是任何一个爬客应该遵守的江湖道义~

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:资深程序员总结的Python学习思路及方法
下一篇:Python开发中20个常用的库和模块

[Python GUI编程]第五节,text部件

[Python GUI编程]第四节,entry控件​

[Python GUI编程]第三节,Button控件

[Python GUI编程]第一节,生成个窗体

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省