forked from Boris-code/feapder
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_spider.py
More file actions
52 lines (43 loc) · 1.48 KB
/
Copy pathtest_spider.py
File metadata and controls
52 lines (43 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# -*- coding: utf-8 -*-
"""
Created on 2021-02-08 16:09:47
---------
@summary:
---------
@author: Boris
"""
import feapder
from items import *
class TestSpider(feapder.BatchSpider):
# def init_task(self):
# pass
def start_requests(self, task):
# task 为在任务表中取出的每一条任务
id, url = task # id, url为所取的字段,main函数中指定的
yield feapder.Request(url, task_id=id)
def parse(self, request, response):
title = response.xpath('//title/text()').extract_first() # 取标题
item = spider_data_item.SpiderDataItem() # 声明一个item
item.title = title # 给item属性赋值
yield item # 返回item, item会自动批量入库
yield self.update_task_batch(request.task_id, 1) # 更新任务状态为1
def exception_request(self, request, response):
"""
@summary: 请求或者parser里解析出异常的request
---------
@param request:
@param response:
---------
@result: request / callback / None (返回值必须可迭代)
"""
pass
def failed_request(self, request, response):
"""
@summary: 超过最大重试次数的request
---------
@param request:
---------
@result: request / item / callback / None (返回值必须可迭代)
"""
yield request
yield self.update_task_batch(request.task_id, -1) # 更新任务状态为-1