小爬虫,大世界——爬虫其实很简单

今天讲一讲爬虫。

如果把我们的互联网比作是一个蜘蛛网,那么爬虫就是在网上爬来爬去的蜘蛛。蜘蛛通过网页之间的链接,一个一个页面的读取内容,一直这么做下去,一直到整个网页都读完为止。

爬虫能做的事情非常多,我们知道的搜索引擎Baidu,就是利用爬虫把互联网上的内容全部抓取了下来。爬虫除了可以用来做搜索引擎,还可以帮助我们日常生活和工作中的很多事情。比如你打算买房,那么就可以用爬虫把链家上面的房源全部抓下来;比如你喜欢某个明星,你也可以用爬虫把关于他的所有信息都第一时间抓下来;你可以把豆瓣上的书和电影都抓下来…

一个小小的爬虫,能带我们发现大的世界。

爬虫这么强大,那今天皮哥就来具体讲一讲怎么写一个爬虫。

为了大家学得有激情,皮哥“精心”挑选了一个网站作为例子,这是一个美女图片的网站,后面我们讲到更高阶的内容的时候,还会用比如豆瓣这样的知名网站作为示例。

网站:http://www.ugirls.com/Content/

我们的目标是用爬虫自动把页面上所有的美女图片抓取下来,接下来,我们一步一步来实现这个目标。

第一步

打开目标网站的页面,点击查看“源代码”,我们看到的是密密麻麻的代码,这就是我们上节课介绍的HTML代码,几乎所有的网页都是用这门语言写的。我们上网看到的是绚丽多彩的网页,但是对于Python程序来说,它看到的就是密密麻麻的HTML代码,对Python爬虫来说,网页就是这样的代码块。

那么,我们怎么样能够让Python爬虫程序自动去访问我们的目标页面呢?下面这段代码可以做到。

可以看到,最后我们打印code和content两个值,code指的是访问http的状态码,我们在上一节课有提到,200表示访问正常,然后content就是返回的爬虫所看到的页面代码块。

这里我们用到了requests这个python的库,这是一个非常强大好用的库,用它来发送网络请求非常简单。在几乎所有python爬虫程序里,我们都能看到它的身影。更详细的资料,可以查阅中文官方文档:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html。

第二步

我们已经让爬虫能够自动访问目标页面了,接下来我们需要让爬虫程序自动在HTML代码里面找到美女图片的标签,要时刻记住,对于我们来说,页面是绚烂多彩的,但是对于程序来说,它“看到”的是一大片代码。所以教程序怎么去找到需要的信息,这是在写任何爬虫时都非常非常关键的一个步骤。HTML代码太杂乱无章,我们要告诉程序怎么去定位到需要的信息,这样我们才能把它剥离出来。在今天的课程中,我们要定位的就是图片。

我们知道,跟图片相关的标签是<img>,那我们可以借助浏览器的ctr+f快捷键快速找到<img>标签所在的位置。

在以后写爬虫的时候,我们可能还会遇到要在诸如<span>、<div>等标签里面定位需要的信息,而这样的标签在页面上太多,需要定位到一个更小的范围来查找标签。

下面这段代码展示了如何定位到需要的<img>标签。

大家可以看到,我们成功的定位到了所需要的图片,一共是10张图片。跟我们在网页上看到的数目完全吻合。然后我们分别把10张图都打印出来,我们注意到,对爬虫程序来说,打印的是10个<img>标签对象。

我们在这里用到了BeautifulSoup这个python库,这又是一个非常强大,也会经常用到的Python库,BeautifulSoup能让爬虫程序非常方便的从HTML里面提取需要的数据,我们已经在上面的示例中见识到它的威力,接下来的爬虫之旅中,我们还会继续用到它的。更详细的中文文档,可以查阅这里:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html。

第三步

我们已经成功教程序定位到需要的标签上,接下来就是最后一步,让Python爬虫程序自动地把这些图片下载下来。从上一步的打印结果来看,我们发现<img>标签里面有一个src的属性,我们复制其中一个src属性,在新的浏览器窗口打开,发现正是一张美女图片。<img>的src属性,标明的正是这张图片的地址。

所以,要让程序能够自动下载图片,跟程序自动访问页面一样,我们让程序自动去访问这些图片地址。要记住的是,人类看到的图片是美丽多彩的,但是对于程序来说,图片也跟网页差不多,是一串串的代码组成的,在程序的世界里,任何东西都差不多由代码组成,(心疼程序一秒钟)。不过现在的人工智能发展迅速,已经达到了教会Python程序从这一大片的代码里面识别哪些是美女的图片,哪些是帅哥的图片了。

下面这段代码展示了怎么教程序自动去下载图片。

程序依次访问图片地址,然后把读取到的一串代码,保存成图片文件,在这里,我们用<img>标签的alt属性作为保存图片的名称。然后,我们打开图片文件,就会发现图片已经下载成功了。

小结

所以,综合前面的步骤,我们教给Python程序的工作包括:

1. 自动“访问”我们打开的页面;

2. 自动定位找到所有的美女图片;

3. 把图片下载保持起来。

把每一步的工作合到一起,我们就完整的完成了一个最基本的Python爬虫程序。

后记

今天皮哥讲解了如何写一个基本的爬虫,麻雀虽小五脏俱全,这个简单的爬虫程序,其实已经包含了一个爬虫所需要的大部分成分。

我们可以修改这个爬虫程序,去爬取更复杂更丰富的页面,比如爬取“豆瓣电影”、“新浪微博”、“链家网”等等。然后可以基于这些爬取的数据做更多有趣的事情。

偷偷的说一句,上面提到的这三个著名网站,皮哥都爬过,数据那是相当的interesting啊!

============================================================

我创建了一个python技术交流的圈子,方便大家交流讨论技术,以及交流求职经验和内推信息。

社群是免费的,免费的,免费的,大家加我的微信之后(个人信息里面可以找到),注明“简书”就可以拉入群了~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容

  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,672评论 2 59
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,263评论 25 707
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    X先生_未知数的X阅读 15,967评论 3 119
  • 小宝最近很烦恼,整天哀声叹气的,就像株发蔫的蒜苗,丢了魂儿似的。工作错误频发,也不像以前活波跳腾了。看他这...
    探路人阅读 192评论 0 3
  • 在这里和家一样,一样温暖,一样快乐,一样幸福,一样具备着避风的港湾。我在这里生活了三年,在广设2班生活了三年,在这...
    宇焉知鱼之乐阅读 355评论 0 2