scrapy 對傳到items的值預處理

2022-05-17 05:39:08 字數 1780 閱讀 2855

如何實現對值進行預處理?

對於傳遞進items的值,首先明白有兩個動作,,那就可以分別對這兩個動作進行邏輯處理

#!/usr/bin/python3

# -*- coding: utf-8 -*-

__author__ = 'beimenchuixue'

__blog__ = ''

import hashlib

import scrapy

import re

from w3lib.html import remove_tags

from scrapy.loader import itemloader

from scrapy.loader.processors import takefirst, join, mapcompose

from tools.shared import get_md5, go_remove_tag

class allitemloader(itemloader):

"""通過自定義itemloader要求都取列表中第乙個值

"""default_output_processor = takefirst()

def get_md5(url):

"""對獲取的url進行md5"""

m = hashlib.md5()

m.update(bytes(url, encoding='utf-8'))

return m.hexdigest()

# 把對應的內容,去掉標籤、空格、空行

def go_remove_tag(value):

content = remove_tags(value)

return re.sub(r'[\t\r\n\s]', '', content)

def comeback(value):

"""啥也不幹,直接返回"""

return value

class enet(scrapy.item):

article_id = scrapy.field(

# 進來的值預處理

input_processor=mapcompose(get_md5)

)article_url = scrapy.field()

title = scrapy.field()

content = scrapy.field(

input_processor=mapcompose(go_remove_tag),

# 從items出去的值進行拼接處理

output_processor=join('')

)publish_time = scrapy.field()

come_form = scrapy.field(

# 獲得結果還是列表

output_processor=mapcompose(comeback)

)

input_processor     進 處理

output_processor     出 處理

mapcompose        繫結處理函式

join                               進行拼接

takefirst         出,取列表第乙個值

items如何把spider中解析到的值進行處理?

spider中獲得的是存放在列表中,而傳入繫結函式中是按順序乙個乙個分別傳入處理函式進行處理

scrapy爬蟲問題items與pipelines

scrapy爬蟲問題items與pipelines 問題描述 在爬蟲py檔案裡寫了兩次yield item 兩個item內容不同 在pipelines分別寫了兩個與item對應的pipeline,item傳輸的資料只能進入優先順序高的pipeline。解決 因為item傳輸的資料會傳給每個pipel...

Scrapy 爬蟲框架 物品(Items)詳解

開發環境為 python3.6,scrapy 版本 2.4.x 爬蟲專案全部內容索引目錄 看懂python爬蟲框架,所見即所得一切皆有可能 本章帶你學習基於python3的scrapy 爬蟲框架中資料爬取過程中從非結構化源 通常是網頁 中提取結構化資料。內容基於 scrapy 爬蟲框架 原始碼版本 ...

Scrapy爬蟲入門教程六 Items(專案)

python版本管理 pyenv和pyenv virtualenv scrapy爬蟲入門教程一 安裝和基本使用 scrapy爬蟲入門教程二 官方提供demo scrapy爬蟲入門教程三 命令列工具介紹和示例 scrapy爬蟲入門教程四 spider 爬蟲 scrapy爬蟲入門教程五 selector...