# 2.1. 框架雏形 -- 实现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.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

# 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
14

其中property的理解:

  • property 能够让调用一个方法和调用一个属性一样容易,即不用打括号
  • property 能够让这个属性的值是只读的,即不能够对其进行重新赋值,达到一定的保护的目的

# 小结

  • 本节重点
    • 完成对request,response,item的编写
    • 掌握property的用法
上次更新: 2020/10/21 下午5:54:02