Scrapy 데이터를 json에 저장
json 저장된 pipeline 만들기
pipeline 처리
import codecs
이 가방은 인코딩을 잘 처리하여 각종 인코딩이 번잡한 작업을 피할 수 있다.
새 pipeline을 만듭니다. 구조 함수codecs에서 파일을 열고 'w' 방식으로 엽니다.
class JsonWithEncodingPipeline(object):
def __init__(self):
self.file = codecs.open('article.json', 'w', encoding="utf-8")
둘째, pipeline을 아래의 방식처럼 처리합니다.
class ArticlespiderPipeline(object):
def process_item(self, item, spider):
item은 dict가 아니지만 ㎡는
dict(item)
로 dict로 전환할 수 있습니다.직접json.dumps(item)
은 안 되기 때문에 dict()로 전환해야 합니다. def process_item(self, item, spider):
lines = json.dumps(dict(item), ensure_ascii=False, )
여기서
ensure_ascii=False
False가 필요합니다. 그렇지 않으면 중국어를 가져오는 것이 정상적이지 않습니다.파일을 쓰고 item을 되돌려줍니다.
def process_item(self, item, spider):
lines = json.dumps(dict(item), ensure_ascii=False) + "
"
self.file.write(lines)
return item
파충류를 닫을 때 파일을 닫습니다.
def spider_closed(self, spider):
self.file.close()
pipeline 구성
ITEM_PIPELINES = {
'ArticleSpider.pipelines.ArticleImagePipeline': 1,
'ArticleSpider.pipelines.JsonWithEncodingPipeline':2,
}
Scrapy 자체 쓰기 json
pipeline에서
from scrapy.exporters import JsonItemExporter
함수에 들어가면 맨 위에 여러 가지 형식의 내보내기 방식을 볼 수 있다.
wb
이진법으로 엽니다.class JsonExporterPipeline(object):
# Scrapy JsonExporter Json 。
def __init__(self):
self.file = open('article_exporter.json', 'wb')
self.exporter = JsonItemExporter(self.file, encoding="utf-8", ensure_ascii=False)
self.exporter.start_exporting()
def close_spider(self, spider):
self.exporter.finish_exporting()
self.file.close()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
json에 앞뒤에 괄호가 있는 것은 exporter 때문입니다.py에는 앞뒤에 괄호가 붙어 있습니다.
def start_exporting(self):
self.file.write(b"[
")
def finish_exporting(self):
self.file.write(b"
]")
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.