学习python完基础,有些迷茫.眼睛一闭,一种空白的窒息源源不断而来.还是缺少练习,遂拿爬虫来练练手.学习完斯巴达python爬虫课程后,将心得整理如下,供后续翻看.整篇笔记主要分以下几个部分:
1.做一个简单的爬虫程序
2.小试牛刀--抓取百度贴吧图片
3.总结
1.做一个简单的爬虫程序
首先环境描述
Device: Mba 2012 Yosemite 10.10.1
Python: python 2.7.9
编辑器: Sublime Text 3
这个没有什么好说的,直接上代码吧!
1 2 3 4 5 6 7 8 9 10 11 12 13 |
''' @ urllib为python自带的一个网络库 @ urlopen为urllib的一个方法,用于打开一个连接并抓取网页, 然后通过read()方法把值赋给read() ''' import urllib url = "http://www.lifevc.com"#多嘴两句,为什么要选lifevc呢,主要是最近它很惹我. html = urllib.urlopen(url) content = html.read() html.close() #可以通过print打印出网页内容 print content |
很简单,基本上没有可说的,这个也就是python的魅力,几行代码就完成.
当然我们仅仅抓取网页,没有实在的价值.接下来我们就开始做一点有意义的事情.
2.小试牛刀
抓取百度贴吧图片
其实也很简单,因为要抓取图片,还需要先分析一下网页源代码
(这里以知道基本html知识,浏览器以chrome为例)
如图,这里简要说下步骤,请参考.
打开网页,右键点击,选择"inspect Element"(最下面这一项)
点击下面弹起来的框框最左边那个问号,问号会变成蓝色
移动鼠标去点击我们想要抓取的图片(一个萌妹子)
如图,我们就可以图片在源码中的位置了源码分析
下面将源码相关拷贝出来
12 <img class="BDE_Image" src="http://hangzhou01.oss-cn-hangzhou.aliyuncs.com/old/7745ca9531b3486193283fd6f4557851.jpg" height="840" width="560" style="cursor: url(http://tb2.bdstatic.com/tb/static-pb/img/cur_zin.cur), pointer;">经分析和对比(这里略掉),基本上可以看到要抓取的图片几个特征:
1.在img标签下
2.在名为BDE_Image的类下面
3.图片格式为jpg
正则表达式后续我会更新,请关注依照上述判断,直接上代码
1234567891011121314151617181920212223 '''@本程序用来下载百度贴吧图片@re 为正则说明库'''import urllibimport re# 获取网页html信息url = "http://tieba.baidu.com/p/2336739808"html = urllib.urlopen(url)content = html.read()html.close()# 通过正则匹配图片特征,并获取图片链接img_tag = re.compile(r'class="BDE_Image" src="(.+?\.jpg)"')img_links = re.findall(img_tag, content)# 下载图片 img_counter为图片计数器(文件名)img_counter = 0for img_link in img_links:img_name = '%s.jpg' % img_counterurllib.urlretrieve(img_link, "//Users//Sean//Downloads//tieba//%s" %img_name)img_counter += 1如图,我们就抓取你懂的图片
百度贴吧 抓取图片
3.总结
如上两节,我们就很轻松的就可以网页或者图片.
补充一点小技巧,如果遇到不是很明白的库或者方法,可以通过以下方法进行初步了解.
dir(urllib) #查看当前库有哪些方法
help(urllib.urlretrieve) #查看跟当前方法相关的作用或者参数,官方比较权威
或者https://docs.python.org/2/library/index.html
这一节我们讲解如何抓取网页和下载图片,在下一节里面我们会讲解如何抓取有限制抓取的网站.
