python实现简单爬虫功能

爬虫抓取图片实战
本文介绍使用Python爬虫技术抓取网页中的图片资源,并详细解释了如何利用正则表达式匹配图片链接,以及如何使用urllib库下载图片到本地的方法。
 1 #首先我们可以先获取要下载图片的整个页面信息
 2 #coding=utf-8
 3 #Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据
 4 import urllib
 5 import re
 6 #首先,我们定义了一个getHtml()函数:
 7 def getHtml(url):
 8 #urllib.urlopen()方法用于打开一个URL地址
 9     page = urllib.urlopen(url)
10 #read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。
11     html = page.read()
12     return html
13 
14 #创建了getImg()函数,用于在获取的整个页面中筛选需要的图片连接
15 def getImg(html):
16 #采用正则表达式取出页面中图片的url
17     reg = r'src="(.+?\.jpg)" pic_ext'
18 #re.compile() 可以把正则表达式编译成一个正则表达式对象
19     imgre = re.compile(reg)
20 #re.findall() 方法读取html 中包含 imgre(正则表达式)的数据
21     imglist = re.findall(imgre,html)
22 #通过一个for循环对获取的图片连接进行遍历,为了使图片的文件名看上去更规范,对其进行重命名,命名规则通过x变量加1
23     x = 0
24     for imgurl in imglist:
25 #urllib.urlretrieve()方法,直接将远程数据下载到本地
26         urllib.urlretrieve(imgurl,'%s.jpg' % x)
27         x+=1
28 #我们要爬的网址,对每个网址其图片存放方式可能不一样,所以需要不同的正则表达式
29 html = getHtml("http://tieba.baidu.com/p/2460150866")
30 print getImg(html)
31   
32 http://www.cnblogs.com/fnng/p/3576154.html#top

 update:

如果想将其下载在你指定的file中,只需要修改 

urllib.urlretrieve(imgurl,'%s.jpg' % x)

即可,
urlretrieve(url,path)
将path修改成你想要的,如我想放在 F:\pic
则修改为
urllib.urlretrieve(imgurl,'f:/pic/%s.jpg' % x)
就可以了~~

update by 2015.1.27:
实现下载多个页面的图片,以下载煎蛋妹子图(不要问我为什么~~)为例:
先贴上代码
 1 #coding=utf-8
 2 import urllib
 3 import re
 4 import os
 5 
 6 urlList = 'http://jandan.net/ooxx/page-%s' 
 7 global x
 8 x=0
 9    
10 def getHtml(url):
11     page = urllib.urlopen(url)
12     html = page.read()
13     return html
14 
15 def getImg(html):
16     reg = r'src="(.*?\.jpg)" '
17     imgre = re.compile(reg)
18     imglist = re.findall(imgre,html)
19     global x
20     for imgurl in imglist:
21         urllib.urlretrieve(imgurl,'f:/pic/%s.jpg' % x)
22         x+=1
23 
24 
25 for i in range(1315, 1317):
26     
27     i=urlList % (i)
28     html=getHtml(i)
29     print getImg(html)

这段代码与上面相比就是增加了一个全局变量,用以实现命名时不覆盖,然后对于其每一页的URL进行分析得到的一个共性,

用  ‘http://jandan.net/ooxx/page-%s’ 及一个for循环来下载你指定的页面。

转载于:https://www.cnblogs.com/xlchen/p/4251329.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值