python面向对象图片_运维学python之爬虫基础篇实战(七)爬取伯乐在线面向对象图片...

自己写爬虫主要是用来学习python,请大家不要过分的爬取别人的站点,给浏览网站造成影响

上篇讲了如何爬去百度贴吧内容,今天讲一讲图片保存的例子,伯乐在线有个面向对象(就是相亲哦)的网页,里面有很多妹子的个人介绍,我们主要爬取图片,按照编号名称创建文件夹存储在文件夹中。

1 分析url

伯乐在线打开详细页面后的网址为http://date.jobbole.com/4767/

其中4767为个人id,每个人的id是对应的不同页面,好我们就把url分成2部分

baseurl = http://date.jobbole.com/

pn = 4767

2 页面分析

方法是一样的,还是用火狐浏览器F12,打开调试页面

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

3 写正则过滤规则

pattern = re.compile('

', re.S)

关于正则匹配的问题,没有办法,只能是多找网页多练习,我也刚接触,也不敢说自己的是最好的,但能实现获取图片的链接就行了。

4 代码实现

代码内容中只是增加了request.urlretrieve的使用,通过这个模块将图片保存下来。

# -*- coding: utf-8 -*-

# 爬取伯乐在线相亲妹子图片程序

import re

import os

import time

from urllib import request

class BoLe:

"""

定义爬取伯乐在线程序的类

"""

def __init__(self, baseurl):

"""

初始化参数

"""

self.baseurl = baseurl

def getpage(self, pn):

"""

定义获取页面图片方法

"""

try:

url = self.baseurl + str(pn)

time.sleep(1)

req = request.Request(url)

response = request.urlopen(req)

return response.read().decode('utf-8')

except request.URLError as e:

if hasattr(e, 'reason'):

print(e.reason)

elif hasattr(e, 'code'):

print(e.code)

def getimg(self, page, pn):

"""

获取当前页面图片

"""

# 定义正则,获取内容

pattern = re.compile('

', re.S)

items = re.findall(pattern, page)

for item in items:

# print(item)

# print(pn)

# 通过urlretrieve模块将图片保存下来,图片名称用time.time()生成当前时间,防止重名覆盖

request.urlretrieve(str(item), 'E:\\' + str(pn) + "\\" + '% s' % time.time() + '.jpg')

def mkdir(self, pn):

"""

创建文件夹方法,将获取的个人id作为文件夹名称创建文件,图片保存在这个文件夹下

pn指的是每个妹子的个人id

"""

# 定义路径变量

path = 'E:\\' + str(pn)

# 通过os模块的exists方法判断目录是否存在,存在返回False,不存在则创建

if os.path.exists(path):

return False

else:

# 通过mkdir创建文件夹

os.mkdir(path)

# print(path + '*****************')

return True

def start(self, start, end):

"""

启动方法,通过传入的start,end参数获取这个断内的所有号码作为用户id

爬取每个id的主页图片

"""

# 通过for循环方式执行,pn为start和end+1之间的数字,也就是个人id

for pn in range(start, end+1):

page = self.getpage(pn)

# 通过判断,如果不存在就打印网页不存在,存在就保存再相应的id目录中

if page is None:

print("编号%s的网页不存在" % pn)

continue

else:

self.mkdir(pn)

self.getimg(page, pn)

if __name__ == '__main__':

baseurl = 'http://date.jobbole.com/'

bole = BoLe(baseurl)

bole.start(4750, 4850)

最终效果:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值