新手用Python打造简单爬虫

刚接触Python不到一个礼拜,由于有C的基础,语法上手很快。

了解完语法后,于是想做个简单的爬虫,有了小小成就感也有学下去的动力啊。


接下来进入正题:

目标:把这个百度贴吧的帖子内的图片用爬虫下载下来

现在先理清概念:

网页都是由HTML写,我们打开一个网页,在Chrome右键点击"审查元素",就可以看到该网页的HTML代码。我们用ctrl + f 在打开的窗口中搜索jpg,搜索很多带有jpg的代码,这些代码形式都src="http://xxxxxx.jpg"这个样子。代码中间的连接就是该网页内图片的地址。

爬虫的思路:把网页的html代码抓下来,然后通过正则表达式筛选出带有jpg的连接,然后下载到文件夹里。

其中关于实现的过程,都有现成的函数方法可以让我们使用,这一点我们现在可以先不用考虑。

代码:

import re                               #re类,与正则表达式相关的类
import urllib                           #urllib类,内含与url相关的的方法

def getHtml(url):                       #抓取html代码
	page = urllib.urlopen(url)      #抓取网页所有内容             
	html = page.read()              #得到网页的html代码
	return html

def getImg(html):                       #从html代码中筛选出jpg的连接,并下载
	reg = r'src="([A-Za-z0-9./=%:]*\.jpg)" pic_ext'         #正则表达式
	imgre = re.compile(reg)                                 #正则表达式编译,可以加快查找速度
	imglist = re.findall(imgre, html)                       #在html中搜索符合imgre正则表达式的连接
	x = 0
	for imgurl in imglist:
	 	urllib.urlretrieve(imgurl, r'%s.jpg' %x)        #保存图片
	 	x += 1       

html = getHtml("http://tieba.baidu.com/p/3016698945")
getImg(html)


其中的函数,可以到python的官方网站上去阅读相关文档。

有关正则表达式,可以去看这个教程正则表达式30分钟入门教程。对于新手,记住正则表达式的功能是,为我们从一大堆文字中筛选出符合我们表达式的文字。先大致了解一下表达式的语法,不要死记,需要用的时候再去查表,这样会有效率得多。


这个小程序也是折腾了两天才弄好,关于新手语言学习,零零碎碎有了一些感触。

总结了一下体会:

  1. 我在学习写这个程序之前,根本不知道正则表达式是什么东西,只模模糊糊知道,爬虫要先筛选链接出来,并下载,但是不知道要如何筛选,如何下载。python函数库里有大量好用的函数,往往可以帮助我们实现一些我们意想不到的功能。这样的情况常常发生,就是我们要实现一个看似很难的功能,但是函数库里往往就有现成的函数可以使用。从另一个方面看,新手的学习过程,就是对语法和函数库的熟悉。
  2. 观看视频学习,比较能让人对概念和知识点理解得清晰一些。现在往往先去查阅资料阅读,然后可以的话去找个视频,跟着视频坐下来,思路会清楚不少。
  3. 很多看似高深的东西,只是因为一道坎挡着,而跨过这道坎,往往只需要点睛一笔。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值