教女朋友爬虫

作者: Gutierrez | 来源:发表于2015-12-08 19:09 被阅读5345次

我有个马上要混IT圈的女朋友,可她连大学C语言都是睡过的。我就是个操心的命,担忧她适应不了与周遭程序猿怎么交流。

虽然我一有机会便灌输编程的快乐,科技的魅力,但收效甚微。所以这次,我准备耐心给妹纸写个教程,教她爬虫,感受编程的成就感,也掌握个得瑟利器。

好勒,我们开始之前,我得确保她此时情绪稳定,因为这需要点耐心。真诚的给大家意见,如果她眉头紧锁,赶快收起笔记本本带她去吃好吃的,和谐最要紧。

配置环境

首先,我们需要台电脑,幸亏妹子有Mac,省了不少事。最适合爬虫的程序语言当属Python,Mac已经内置了Python,但我们需要补充一个爬虫需要的库requests

电脑是个笨蛋,只能听懂计算机语言,所以我们需要把我们的想法用计算机语言告诉他,让他乖乖的执行。库是大神们已经写好的程序,我们导入库,就可以利用他们的成果了。

下载文件保存在根目录(打开Finder就是)下,找到终端,打开后输入下面的代码,你不需要懂这是什么意思,总之,做完之后我们就配置好了所需的环境。心中默默祈祷,愿一切顺利。

终端在哪里
python get-pip.py
pip install requests

准备工作

在进行爬虫之前,我们需要去需要爬虫的地方去踩踩点。我和女友都喜欢好奇心日报,那就去爬些好奇心日报的图片下来。
在chrome中打开所需爬虫的网址,在网页空白处右键单击,在弹出的菜单中选择审查元素,在弹出的底栏中就可以看到网页的源代码了,图片的地址就藏在这些乱如麻的代码中。不过,好在我们可以点击底栏左上角的放大镜,然后在选择网页中的图片就可以快速在代码中定位图片地址了。

chrome怎么用

多选择几张图片,仔细观察会发现规律,格式是一样的。<img class="pic" src="后面就是我们需要的图片地址。类似的,alt="后面是该条文章的标题,其它的信息仔细找找也可以在这堆代码中找到。

img class="pic" src="/system/articles/articleshows/18675/relatedMediumPc2/18675.jpg?1449539003" alt="可口可乐弧线瓶诞生 100 年了,它是如何改变了我们所处的世界? | 好奇心商业史"

看到这里,我们需要总结下爬虫。我们浏览的网页绝大部分是通过一种编码(HTML)将文字图片视频等内容编程一堆复杂的代码,如我们上面所见,浏览器会将这些代码解释成我们看到的样子,换言之,我们在浏览器中看到的都能在网页源码中找到。爬虫是一种通过分析网页源码获取我们信息的程序,在这里,我们利用爬虫找到网页源码中的图片并将其下载到本地。

爬虫程序

在编写代码之前,我们需要准备个代码编辑器,这里推荐微软的良心大作VS code,献上下载地址
打开VScode,将其保存在我们之前所说的根目录下,保存成picdownloader.py,然后我们开始敲代码。

#-*-coding:utf8-*-
import re
import requests

html = requests.get('http://www.qdaily.com/categories/17').text

pic_url = re.findall('"pic" src="(.*?)"',html,re.S)

i = 0 
for each in pic_url:
    url = 'http://www.qdaily.com' + each
    print('now downloading:' + url)
    pic = requests.get(url)
    fp = open('pic//' + str(i) + '.jpg','wb')
    fp.write(pic.content)
    fp.close()
    i += 1

下面我们一条一条说。

#-*-coding:utf8-*-的意思上字符编码是utf-8。妹子只需要知道写上这条总没错,不写有可能出错

import re import requests的意思上导入rerequests库,告诉电脑,我们下面要用这两个库中的程序了。

下面这条代码的目的是获取网页的源代码,保存在html中,当然你可以换成别的网页。

html = requests.get('http://www.qdaily.com/categories/17').text

下面这条代码是最核心的代码,实现的功能是从上面的到的源代码中,查找所有的图片地址,将其保存在pic_url中。'"pic" src="(.*?)"'表示我们查找的图片地址在代码中前面是"pic" src=",后面是"html就是上面我们取得的源代码。

pic_url = re.findall('"pic" src="(.*?)"',html,re.S)

最后,我们只需要按照得到的图片地址下载图片到指定文件夹。代码稍显复杂,但别担心,下面的代码已经不重要了,因为爬虫最核心的任务我们已经完成。你可以拷贝下面的代码添加到你的代码后面,不过我还是会讲解代码的含义,但这里不懂也没关系。

for each in pic_url:中,for语句表示循环遍历pic_url,因为pic_url中保存着所有的图片地址,所以下面的代码会执行多次,每次会处理一张图片。each在下面的代码中就代表每次执行的图片地址。

url = 'http://www.qdaily.com' + each我们得到的地址不完整,需要与好奇心日报的主页合并,python中将两个字符串合并,只需要起来即可。

print('now downloading:' + url)的功能是向终端打印括号中的内容,我们把它当作进度条,执行时观察终端窗口,也许你会恍然大悟。

pic = requests.get(url)的功能是从url图片地址下载到pic中。

最后所做的就是将下载得到的pic图片内容写到文件中,并将其保存在pic文件夹中。

fp = open('pic//' + str(i) + '.jpg','wb')
fp.write(pic.content)
fp.close()

完整的代码点此下载

执行程序

千万不要忘记在根目录新建个文件夹来保存图片,我们这里的文件夹是pic,还记得终端么,打开它,写下如下代码,回车即可

python picdownloader.py

到这里,我们完成图片爬虫程序,是不是很简单。女王,我已尽力,如果你没懂,看来还得我手把手教,约么?

欢迎关注公众号“百杏果阁”

相关文章

  • 教女朋友爬虫

    我有个马上要混IT圈的女朋友,可她连大学C语言都是睡过的。我就是个操心的命,担忧她适应不了与周遭程序猿怎么交流。 ...

  • 教女朋友爬虫(续)

    上次写的教程让女票高兴了很久,但她高兴的原因恐怕并不是学会了爬虫,这点我还是非常清醒的。这篇教程的续集我很早就想好...

  • 教女

    芭比新衣谁裁出? 作者正画美人鱼。 横撇竖捺学书法, 寓教于乐琢美玉。

  • 教女

    今日小女哭闹,究其原因。还是与兄长争食。教训完儿子,看着丫头,甚是忧心。也不管她听懂听不懂,拉过来罚站十分钟,开始...

  • 已婚男人必看,教你三十六计防止老婆出轨

    经常在网络、朋友圈看人们转载一些教女人“如何预防老公出轨”的文章,还有一些教女人“老公出轨了、你该怎么做”的情感课...

  • 教女朋友学编程之 --- 多态

    你先理解下什么是多态,最基本的多态,我给你举个例子:有一个类叫做Animal,也就是代表一个动物的类,Animal...

  • 抓包获取微信文章阅读数实战

    8月3日 更新 对于爬虫需求量较少的朋友 或者本身对爬虫技术不是很熟悉的朋友 可以私信我一下 我这里提供免费的爬虫...

  • 《把时间当作朋友》——教女儿跟时间做朋友

    年初疫情爆发,导致全国学生在家上网课。对于小朋友来说,混乱的不是上课方式,而是对时间的掌控感。分享我从以下三...

  • 教女日记

    女儿早课总是迟到,也懒床,裤头和袜子也不洗,我想了一招,每次主动做都换钱,攒起来自己买相中的东西,女儿欣然接受,当...

  • 教女札记

    孩子只有从她的兴趣中、一个个小小的目标的完成中还有最亲的人的鼓励中,才有可能获得继续努力的动力,继而通过不懈...

网友评论

  • coder_it:兄弟佩服你真会玩
  • 嶝a:写的很好啊!适合新手
  • 没有围墙的世界:写得很详细 继续出女朋友教程呀~~~
    de981514502b:我跟楼主反馈下群众诉求:sunglasses:
  • 泛者:楼主,”在根目录新建个文件夹来保存图片,我们这里的文件夹是pic“,这步该怎么做
    泛者:楼主,这个问题解决了,可是运行之后没有反应,也不提示错误
    Gutierrez:@广泛兴趣爱好者 在终端中 mkdir pic 回车执行
  • de981514502b:你真棒 :+1: :+1:
  • 那个流沙:非常感谢,已经实践了:)
  • Juice007:感觉你写的教程看起来好容易的样子诶 哪天试试看!谢谢分享
  • 0ddcb2e7b0ab:叫啥不好 叫女朋友写爬虫。
  • Mokyz:天天敲代码,对女朋友不好哦~
    Gutierrez:@Mokz 难道最好不是带她一起敲 :smile:
  • 曾樑:哈哈,这个意图很有意思

本文标题:教女朋友爬虫

本文链接:https://www.haomeiwen.com/subject/vsvehttx.html