http模块和item模块
# 框架雏形 -- 实现http模块和item模块
# 目标
- 完成request模块的基础封装
- 完成respons模块的基础封装
- 完成item模块的基础封装
# 1 request对象的封装
对HTTP基本的请求属性进行简单封装,实现一个Request对象
# scrapy/http/request.py
'''封装Request对象'''
class Request(object):
'''框架内置请求对象,设置请求信息'''
def __init__(self, url, method='GET',\
headers=None, params=None, data=None):
self.url = url # 请求地址
self.method = method # 请求方法
self.headers = headers # 请求头
self.params = params # 请求参数
self.data = data # 请求体
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 2 response对象的封装
对HTTP基本的响应属性进行简单封装,实现一个Response对象
# scrapy/http/response.py
'''封装Response对象'''
class Response(object):
'''框架内置Response对象'''
def __init__(self, url, status_code, headers, body):
self.url = url # 响应url
self.status_code = status_code # 响应状态码
self.headers = headers # 响应头
self.body = body # 响应体
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 3 item对象的封装
对数据进行简单封装,实现Item对象:
# scrapy/item.py
'''item对象'''
class Item(object):
'''框架内置Item对象'''
def __init__(self, data):
# data表示传入的数据
self._data = data # 设置为简单的私有属性
@property
def data(self):
'''对外提供data进行访问,一定程度达到保护的作用'''
return self._data
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
其中property
的理解:
property
能够让调用一个方法和调用一个属性一样容易,即不用打括号property
能够让这个属性的值是只读的,即不能够对其进行重新赋值,达到一定的保护的目的
# 小结
- 完成对request,response,item的编写
- 掌握property的用法
编辑 (opens new window)