Skip to content

Commit a73682c

Browse files
committed
下载时间间隔支持随机 添加爬虫文档
1 parent b5fe627 commit a73682c

6 files changed

Lines changed: 81 additions & 5 deletions

File tree

docs/source_code/配置文件.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ COLLECTOR_TASK_COUNT = 100 # 每次获取任务数量
3535

3636
# SPIDER
3737
SPIDER_THREAD_COUNT = 10 # 爬虫并发数
38-
SPIDER_SLEEP_TIME = 0 # 下载时间间隔(解析完一个response后休眠时间)
38+
SPIDER_SLEEP_TIME = 0 # 下载时间间隔 单位秒。 支持随机 如 SPIDER_SLEEP_TIME = [2, 5] 则间隔为 2~5秒之间的随机数,包含2和5
3939
SPIDER_MAX_RETRY_TIMES = 100 # 每个请求最大重试次数
4040

4141
# 浏览器渲染下载

feapder/core/parser_control.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
@author: Boris
88
@email: boris@bzkj.tech
99
"""
10+
import random
1011
import threading
1112
import time
1213
from collections import Iterable
@@ -396,7 +397,16 @@ def deal_requests(self, requests):
396397
self._request_buffer.put_del_request(request_redis)
397398

398399
if setting.SPIDER_SLEEP_TIME:
399-
time.sleep(setting.SPIDER_SLEEP_TIME)
400+
if (
401+
isinstance(setting.SPIDER_SLEEP_TIME, (tuple, list))
402+
and len(setting.SPIDER_SLEEP_TIME) == 2
403+
):
404+
sleep_time = random.randint(
405+
int(setting.SPIDER_SLEEP_TIME[0]), int(setting.SPIDER_SLEEP_TIME[1])
406+
)
407+
time.sleep(sleep_time)
408+
else:
409+
time.sleep(setting.SPIDER_SLEEP_TIME)
400410

401411
def record_download_status(self, status, spider):
402412
"""
@@ -672,4 +682,13 @@ def deal_requests(self, requests):
672682
break
673683

674684
if setting.SPIDER_SLEEP_TIME:
675-
time.sleep(setting.SPIDER_SLEEP_TIME)
685+
if (
686+
isinstance(setting.SPIDER_SLEEP_TIME, (tuple, list))
687+
and len(setting.SPIDER_SLEEP_TIME) == 2
688+
):
689+
sleep_time = random.randint(
690+
int(setting.SPIDER_SLEEP_TIME[0]), int(setting.SPIDER_SLEEP_TIME[1])
691+
)
692+
time.sleep(sleep_time)
693+
else:
694+
time.sleep(setting.SPIDER_SLEEP_TIME)

feapder/setting.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050

5151
# SPIDER
5252
SPIDER_THREAD_COUNT = 1 # 爬虫并发数
53-
SPIDER_SLEEP_TIME = 0 # 下载时间间隔(解析完一个response后休眠时间)
53+
SPIDER_SLEEP_TIME = 0 # 下载时间间隔 单位秒。 支持随机 如 SPIDER_SLEEP_TIME = [2, 5] 则间隔为 2~5秒之间的随机数,包含2和5
5454
SPIDER_TASK_COUNT = 1 # 每个parser从内存队列中获取任务的数量
5555
SPIDER_MAX_RETRY_TIMES = 100 # 每个请求最大重试次数
5656
SPIDER_AUTO_START_REQUESTS = (
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# 数据审核
2+
## 表说明:
3+
4+
> 表名 含义(更新策略)
5+
6+
## 一、准确性
7+
8+
**字段设计是否满足需求? 表之间的关联字段是否满足要求? (需要人工检查)**
9+
10+
> 注意:是否设计了自增 id,id 的类型是否设置为 bigint?
11+
> 注意:unique index 是否需要设计?
12+
> 注意:各张表之间是否需要设计关联字段;
13+
14+
* [ ]
15+
* [ ]
16+
17+
**各字段采集内容及存储格式是否满足要求?是否与网页一致?是否有信息缺失?**
18+
19+
> 备注:可尝试对每个字段进行升降序排列,然后抽样检查;
20+
21+
**是否考虑了网站同一类数据可能出现的数据格式不一致情况?**
22+
23+
> 建议:代码对各个字段不做兼容性处理、数据不一致则抛出异常并记录
24+
25+
* [ ]
26+
* [ ]
27+
28+
## 二、全量性
29+
30+
**如果是增量采集,是否最早信息和最晚信息都采集了,同时条目总数是否正确;**
31+
**如果是批次采集,是否每个批次都有?**
32+
33+
>备注:需要去网页端评估单个批次的总量;
34+
>参考sql语句:SELECT count(1), batch_date from [table_name] GROUP BY batch_date;
35+
36+
**如果与另外一张表有关联关系,是否信息关联完整?**
37+
38+
## 三、稳定性
39+
40+
* [ ] 是否能够长期稳定采集?
41+
* [ ] 是否加IP代理?
42+
* [ ] 是否支持断点续跑?
43+
* [ ] 是否能确保按时启动,定期采集?
44+
* [ ] 是否已开启报警?
45+
46+
## 四、采集频次、类型、存储方式
47+
48+
* [ ] 采集频次是否满足要求?
49+
* [ ] 采集类型是否满足要求:增量采集 or 批次采集?
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# xxx爬虫文档
2+
## 调研
3+
4+
## 数据库设计
5+
6+
## 爬虫逻辑
7+
8+
## 项目架构

feapder/templates/project_template/setting.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#
4040
# # SPIDER
4141
# SPIDER_THREAD_COUNT = 1 # 爬虫并发数
42-
# SPIDER_SLEEP_TIME = 0 # 下载时间间隔(解析完一个response后休眠时间)
42+
# SPIDER_SLEEP_TIME = 0 # 下载时间间隔 单位秒。 支持随机 如 SPIDER_SLEEP_TIME = [2, 5] 则间隔为 2~5秒之间的随机数,包含2和5
4343
# SPIDER_TASK_COUNT = 1 # 每个parser从内存队列中获取任务的数量
4444
# SPIDER_MAX_RETRY_TIMES = 100 # 每个请求最大重试次数
4545
# AUTO_STOP_WHEN_SPIDER_DONE = True # 爬虫是否自动结束

0 commit comments

Comments
 (0)