Home  >  Article  >  Web Front-end  >  教女朋友爬虫是一种什么样的体验_html/css_WEB-ITnose

教女朋友爬虫是一种什么样的体验_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-21 09:00:131260browse

作者:Gutierrez地址:http://www.jianshu.com/p/04459ab36b56

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

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

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

配置环境

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

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

下载文件

https://bootstrap.pypa.io/get-pip.py

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

python get-pip.pypip install requests

准备工作

在进行爬虫之前,我们需要去需要爬虫的地方去踩踩点。我和女友都喜欢好奇心日报,那就去爬些好奇心日报的图片下来。

在chrome中打开所需爬虫的网址,在网页空白处右键单击,在弹出的菜单中选择审查元素,在弹出的底栏中就可以看到网页的源代码了,图片的地址就藏在这些乱如麻的代码中。不过,好在我们可以点击底栏左上角的放大镜,然后在选择网页中的图片就可以快速在代码中定位图片地址了。

多选择几张图片,仔细观察会发现规律,格式是一样的。

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

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

爬虫程序

在编写代码之前,我们需要准备个代码编辑器,这里推荐微软的良心大作VS code,献上下载地址。

https://www.visualstudio.com

打开VScode,将其保存在我们之前所说的根目录下,保存成picdownloader.py,然后我们开始敲代码。

#-*-coding:utf8-*-import reimport requestshtml = requests.get('http://www.qdaily.com/categories/17').textpic_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的意思上导入re 和requests库,告诉电脑,我们下面要用这两个库中的程序了。

下面这条代码的目的是获取网页的源代码,保存在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()

完整的代码点此下载

http://pan.baidu.com/s/1i3LPgTB

执行程序

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

python picdownloader.py

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn