Python爬虫----爬虫入门(2)

来源:互联网 发布:起点数据为 编辑:程序博客网 时间:2024/06/06 04:35

开发环境,ubuntu 14.0.1自带python 2.7.6

urllib是python自带的库,可以用来抓取简单的静态页面。

#coding=utf-8import urllib#Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一#样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:#  urllib.urlopen()方法用于打开一个URL地址。# read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,#并把整个页面下载下来。执行程序就会把整个网页打印输出。def getHtml(url):    page = urllib.urlopen(url)    html = page.read()    return htmlhtml = getHtml("http://www.meizitu.com/a/5347.html")print html

这样就能得到网页的html代码了,但是要找出图片链接,这就要用到正则表达式了。

import redef getImg(html,y):  reg = r'src="http://pic.+" />'   imglist = re.findall(imgre,html)   if imglist:      for i in range(len(imglist)):         imglist[i] = imglist[i][5:][:-4]

正则的使用参考此图,再加一个在线测试地址:
http://regex.supfree.net/
正则表达式

接下来就是下载图片了:使用下面这个函数

urllib.urlretrieve

运行成功,但是循环几次以后出现了
Connection reset by peer 链接被对方重置
后来加了一个
import time
sleep(0.5)在每次请求时,暂停0.5秒,以免请求过快。

完整代码就是:

#coding=utf-8import urllibimport reimport time#Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一#样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:#  urllib.urlopen()方法用于打开一个URL地址。# read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,#并把整个页面下载下来。执行程序就会把整个网页打印输出。def getHtml(url):page = urllib.urlopen(url)html = page.read()return htmldef getImg(html,y):reg = r'src="http://pic.+" />'imgre = re.compile(reg)imglist = re.findall(imgre,html)if imglist:for i in range(len(imglist)):imglist[i] = imglist[i][5:][:-4]# urllib.urlretrieve('http://pic.meizitu.com/wp-content/uploads/2016a/02/07/03.jpg','d7dd.jpg')x = 0for imgurl in imglist:urllib.urlretrieve(imgurl, '%s-%s.jpeg' % (y, x))time.sleep(0.5)print '第' + str(x) + '下好了'x += 1else:print '没有找到地址'for i in range(5002,5350):html=getHtml('http://www.meizitu.com/a/%s.html'%str(i))print igetImg(html,i)#print html

总结:抓下了妹子图网站几千张妹子的图片,但是只能抓取某些网址有规律(比如后面的数字是有规律增长的)
这里写图片描述

1 0
原创粉丝点击