BaseParser

BaseParser为Spider的基类,用来定义任务下发与数据解析,是面向用户提供的接口

源码

  1. class BaseParser(object):
  2. def start_requests(self):
  3. """
  4. @summary: 添加初始url
  5. ---------
  6. ---------
  7. @result: yield Request()
  8. """
  9. pass
  10. def download_midware(self, request):
  11. """
  12. @summary: 下载中间件 可修改请求的一些参数, 或可自定义下载,然后返回 request, response
  13. ---------
  14. @param request:
  15. ---------
  16. @result: return request / request, response
  17. """
  18. pass
  19. def validate(self, request, response):
  20. """
  21. @summary: 校验函数, 可用于校验response是否正确
  22. 若函数内抛出异常,则重试请求
  23. 若返回True 或 None,则进入解析函数
  24. 若返回False,则抛弃当前请求
  25. 可通过request.callback_name 区分不同的回调函数,编写不同的校验逻辑
  26. ---------
  27. @param request:
  28. @param response:
  29. ---------
  30. @result: True / None / False
  31. """
  32. pass
  33. def parse(self, request, response):
  34. """
  35. @summary: 默认的解析函数
  36. ---------
  37. @param request:
  38. @param response:
  39. ---------
  40. @result:
  41. """
  42. pass
  43. def exception_request(self, request, response):
  44. """
  45. @summary: 请求或者parser里解析出异常的request
  46. ---------
  47. @param request:
  48. @param response:
  49. ---------
  50. @result: request / callback / None (返回值必须可迭代)
  51. """
  52. pass
  53. def failed_request(self, request, response):
  54. """
  55. @summary: 超过最大重试次数的request
  56. 可返回修改后的request 若不返回request,则将传进来的request直接人redis的failed表。否则将修改后的request入failed表
  57. ---------
  58. @param request:
  59. ---------
  60. @result: request / item / callback / None (返回值必须可迭代)
  61. """
  62. pass
  63. def start_callback(self):
  64. """
  65. @summary: 程序开始的回调
  66. ---------
  67. ---------
  68. @result: None
  69. """
  70. pass
  71. def end_callback(self):
  72. """
  73. @summary: 程序结束的回调
  74. ---------
  75. ---------
  76. @result: None
  77. """
  78. pass
  79. @property
  80. def name(self):
  81. return self.__class__.__name__
  82. def close(self):
  83. pass

使用

以程序开始结束回调举例:

  1. import feapder
  2. class TestSpider(feapder.Spider):
  3. def start_callback(self):
  4. print("爬虫开始了")
  5. def end_callback(self):
  6. print("爬虫结束了")