Python爬虫入门:下载一只猫

论坛 期权论坛 期权     
第五位面壁者   2019-7-27 14:24   5186   0
    之前给自己立了一个Flag,要在2019年学完吴恩达教授的机器学习课程,结果学完单变量线性回归后就把这个事情扔到爪哇国去了,再想起来这都快八月了,实在惭愧。不过也没什么关系,反正大家都不care这个笔记到底能不能做完,包括我在内。
    之前在用Python代码实现单变量线性回归问题的过程中,我发现一个问题可能会在后期严重的阻碍我们的学习进程,那就是从哪里搞到真实有效的训练集数据?看过我之前文章的朋友都知道,我所使用的训练集数据都是我瞎编的,量少且没什么意义,光是应付单变量线性回归已经有点吃力,更别提后面了,况且用一个"假"的数据集做机器学习分析,也没什么意义啊。
    痛定思痛,我决定开始再学一下Python爬虫,这样在训练集数据方面就可以做到自力更生了,但是我这不是懒嘛,觉得麻烦就一直没动手。一直到上周,PKU的一位博士师姐跟我讨论,她想写一篇文章,需要从网上抓一些数据,想麻烦我做代码实现这一块。我想着,正好借这个机会鞭策一下自己,为了不让自己食言,一定要玩命学习,然后做到七天Python网络爬虫从入门到精通,既能帮朋友忙自己也得到了提升。
    但是!!!我还是太年轻,网络前端知识浩瀚如烟,而硬件工程师出身的我刚开始完全抓瞎,事实上我在七天的第一天就从入门到放弃了。算了吧,还是别妄图一口吃成胖子,咱还是一步一个脚印慢慢来吧。还是老办法,看视频做笔记,这次拜的师父是B站上鼎鼎大名的鱼C工作室掌门小甲鱼老师,学习视频就是他的《[小甲鱼]零基础入门学习Python》。话不多说,我们通过若干个实例开始我们的学习过程,柿子要挑软的捏,我们先从最简单的开始:如何利用Python从网上下载一只猫?
    先给大家介绍一个网站,http://placekitten.com/,如下:


    在这个网站上,只要你在网址后面加上你想要猫咪照片的高和宽,那你就可以得到一只猫,然后右键另存为就可以把它放到桌面上,我现在要做的,就是通过Python代码来实现这个过程。


     抽象的来看,其实只要我们知道这只“猫”的网址,就可以得到它了,这个网址在前端领域的术语叫做URL,我们操作这只“猫”,在Python代码看来,其实就是处理这只“猫”所属的URL。对于URL操作,Python内建了一个十分强大的库供我们使用,那就是urllib,对于使用http传输协议的静态网页操作,urllib应付我们这种小白已经是杀鸡用牛刀了。
    首先了解一下 Urllib 库,它是 Python 内置的 HTTP 请求库,也就是说我们不需要额外安装即可使用,它包含四个模块:

  • 第一个模块 request,它是最基本的 HTTP 请求模块,我们可以用它来模拟发送一请求,就像在浏览器里输入网址然后敲击回车一样,只需要给库方法传入 URL 还有额外的参数,就可以模拟实现这个过程了。
  • 第二个 error 模块即异常处理模块,如果出现请求错误,我们可以捕获这些异常,然后进行重试或其他操作保证程序不会意外终止。
  • 第三个 parse 模块是一个工具模块,提供了许多 URL 处理方法,比如拆分、解析、合并等等的方法。
  • 第四个模块是 robotparser,主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站不可以爬的,其实用的比较少。

    在这里,我们一开始只会用到request模块里的urlopen()函数,废话少说,放码过来


    在Python的官方文档里,urlopen函数的操作类型可以是URL字符串也可以是Request对象,所以第3行的代码相当于先把URL实例化成Request对象,然后再传给urlopen()的。如果把第3行注释掉,换成第4行和第5行的形式,执行程序后得到的结果也是一样的,你的py文件根目录下会多一只猫。


    是不是觉得很简单?想要挑战更复杂的操作?
    那我们下期再见,继续我们的Python爬虫学习过程,要注意学习Python爬虫是为了机器学习抓训练集用的,所以我们的学习过程还so so so long~

参考文献:
[1] B站:《[小甲鱼]零基础入门学习Python》
[2] https://www.jianshu.com/p/63dad93d7000


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:5
帖子:1
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP