您的位置:首页 > 编程语言 > Python开发

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

2016-04-22 00:20 399 查看

开发环境,ubuntu 14.0.1自带python 2.7.6

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

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


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

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

def 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 = 0
for imgurl in imglist:
urllib.urlretrieve(imgurl, '%s-%s.jpeg' % (y, x))
time.sleep(0.5)
print '第' + str(x) + '下好了'
x += 1
else:
print '没有找到地址'

for i in range(5002,5350):
html=getHtml('http://www.meizitu.com/a/%s.html'%str(i))
print i
getImg(html,i)
#print html


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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: