抓蜂鸟网站图片爬虫

来源:互联网 发布:淘宝买东西的订单流程 编辑:程序博客网 时间:2024/04/28 03:22
项目名称:抓蜂鸟网站图片爬虫
源代码:http://download.csdn.net/detail/ytt747536970/7035393
参考微博:http://yxmhero1989.blog.163.com/blog/static/112157956201311743439712/
所用工具:python2.7
使用方法:使用python2.7打开py文件
因为实验室要用一个网站上的图片,所以写了个抓图片的爬虫,之前未用过任何脚本语言,有问题欢迎大家一起交流。
看下面内容之前最好对python有个基本了解,如果本身有编程基础的话,可以去花点时间速成一下python。
以蜂鸟网为例。
使用的包有urllib,re,sys,os
1.首先读取网页,使用urllib包,直接import,(有个类似的urllib2包,这里抓图片我没有用到)
 import urllib url =' http://www.fengniao.com/ ' html = urllib.urlopen(url).read()  print html
运行结果如下:

可以打开url,发现与这里的内容是一样的。
2.使用正则表达式,分析网页源码,右击查看源码
打开http://www.fengniao.com/,右击查看源码
可以发现图片源码是这样的<img src="http://fnd2.img-space.com/290_module_images/20/531dad90bcbba.jpg"
这里我们就要用到正则表达式了,正则表达式这个概念还是以前在linux课上接触过,基本没用过。所以我使用起来还是比较费心的。
可以看这篇博客学习一下http://blog.csdn.net/wxg694175346/article/details/8929576。
但是说实话,看了教程跟实际用感觉还是差好远的,后来请教了一个自然语言方向的同学,他们那边经常用,他华丽丽的告诉我“一般这种text_re=re.compile(r'<doc_(.+?)</doc>',re.S)就够用了”。然后发现果真可以了。
可以测试一下。
代码
import re #<img src="http://fnd2.img-space.com/290_module_images/20/531dad90bcbba.jpg" import rereg = re.compile('img src="(.+?)" ',re.S)text = reg.findall('img src="http://fnd2.img-space.com/290_module_images/20/531dad90bcbba.jpg" ')print text[0]
运行结果



发现reg与图片源码匹配成功,匹配出的确实是我们想要的图片下载地址。
3.图片下载,保存
 采用urllib.urlretrieve(url)来下载图片
4.现在可以成功抓取蜂鸟网首页图片了。
完整代码
import re#<img src="http://fnd2.img-space.com/290_module_images/20/531dad90bcbba.jpg"import urllib,re,sys,osdef get_bing_backphoto():    if (os.path.exists('photos')== False):       os.mkdir('photos')        url = 'http://www.fengniao.com/'        html = urllib.urlopen(url).read()         if html == 'null':            print 'open & read bing error!'            sys.exit(-1)        reg = re.compile('img src="(.+?)" ',re.S)        text = re.findall(reg,html)        #http://s.cn.bing.net/az/hprichbg/rb/LongJi_ZH-CN8658435963_1366x768.jpg        for imgurl in text:            right = imgurl.rindex('/')            name = imgurl.replace(imgurl[:right+1],'')            savepath = 'photos/'+ name            urllib.urlretrieve(imgurl, savepath)            print name + ' save success!'get_bing_backphoto() 
结果如下

可以打开你python.py目录下的photo文件,就可以看到图片了。


5.有一个网站的图片一直弄不下来,www.youxuwugui.com,一直过滤不出它的网址,不知道怎么回事,研究中,有会的可以一起交流!





0 0
原创粉丝点击