... | @@ -3,6 +3,7 @@ |
... | @@ -3,6 +3,7 @@ |
|
## 基本概念
|
|
## 基本概念
|
|
### RFW 结构
|
|
### RFW 结构
|
|
输入(reader) -> 处理(filter) -> 输出(writer)
|
|
输入(reader) -> 处理(filter) -> 输出(writer)
|
|
|
|
|
|
IPO (input - process - output) 模型
|
|
IPO (input - process - output) 模型
|
|
|
|
|
|
|
|
|
... | @@ -31,8 +32,8 @@ filter3 --> writer3 |
... | @@ -31,8 +32,8 @@ filter3 --> writer3 |
|
```
|
|
```
|
|
|
|
|
|
### 流转的数据结构
|
|
### 流转的数据结构
|
|
单条
|
|
#### 单条
|
|
批量
|
|
#### 批量
|
|
|
|
|
|
## 配置
|
|
## 配置
|
|
### 变量
|
|
### 变量
|
... | @@ -141,7 +142,6 @@ filter_query_query_contact_record: |
... | @@ -141,7 +142,6 @@ filter_query_query_contact_record: |
|
### 驱动非scrapy爬虫
|
|
### 驱动非scrapy爬虫
|
|
基本思路: 使用redis reader作为爬虫任务队列。使用爬虫实现为UDM模块。使用kafka writer保存结果
|
|
基本思路: 使用redis reader作为爬虫任务队列。使用爬虫实现为UDM模块。使用kafka writer保存结果
|
|
|
|
|
|
|
|
|
|
```yaml
|
|
```yaml
|
|
pump:
|
|
pump:
|
|
reader:
|
|
reader:
|
... | @@ -155,5 +155,34 @@ filter_query_query_contact_record: |
... | @@ -155,5 +155,34 @@ filter_query_query_contact_record: |
|
- kafka_result
|
|
- kafka_result
|
|
```
|
|
```
|
|
|
|
|
|
### 爬虫任务提交
|
|
### 想实现的功能data_pump还没有,怎么办?
|
|
|
|
试试eval
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
trans_fields:
|
|
|
|
class: field.Eval
|
|
|
|
init:
|
|
|
|
pc_daily_pv: "baidu_planner['pc_pv']//30"
|
|
|
|
mobile_daily_pv: "baidu_planner['mobile_pv']//30"
|
|
|
|
collect_date: "spider_time[:10]"
|
|
|
|
```
|
|
|
|
|
|
|
|
### 想对数据转换一下结构
|
|
|
|
试试jsonpath
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
ad_word_performance_fields:
|
|
|
|
class: field.JsonPathExtract
|
|
|
|
init:
|
|
|
|
word: "word"
|
|
|
|
label: "baidu_planner.show_reason"
|
|
|
|
competition: "baidu_planner.all_competition"
|
|
|
|
pc_pv: "pc_daily_pv"
|
|
|
|
mobile_pv: "mobile_daily_pv"
|
|
|
|
bid: "baidu_planner.all_bid"
|
|
|
|
week_index: "trends_attention.week_index"
|
|
|
|
collect_date: "collect_date"
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 爬虫任务提交 |