나는 정말 기본 설정, CrawlSpider
에서 서브 클래스 거미와 세 개의 필드는 다음과 같이 찾고 항목을 내 거미는 웁니다 응답을 구문 분석왜 치료의 분야는 사전입니까? 기본적으로
class AppdexItem(Item):
name = Field()
url = Field()
desc = Field()
이 같은 항목 :
i = AppdexItem()
name = hxs.select("//h1[@class='doc-banner-title']/text()")
i['name'] = name.extract()[0]
Field가 실제로 무엇인지 읽을 때 혼란스러워졌습니다. 이것은 말 그대로 its implementation입니다 :
class Field(dict):
"""Container of field metadata"""
그것은 일반 간단한 dict
입니다. 왜 그런지 궁금해하고 잠시 구현을 보았습니다. 여전히 의미가 없습니다. 그래서 나는 항목으로 구문 분석했는데 한 페이지에 scrapy shell
를 실행하고이는 내가 가진 무엇 :
In [16]: item = spider.parse_app(response)
In [17]: item.fields
Out[17]: {'desc': {}, 'name': {}, 'url': {}}
In [18]: item['name']
Out[18]: u'Die Kleine Meerjungfrau'
무엇입니까? 나는 완전히 잘못된 것을하고있다. (나는 공식 자습서와 예제를 통해 모든 것을했다.) 또는 Field
이 dict
인 것은 완전히 무의미하다.
누군가 나에게 설명 할 수 있습니까?
'dict'은 파이썬에서 가장 최적화 된 데이터 구조 중 하나라는 점을 고려할 때 더 나은 질문은 "Scrapy가 필드 메타 데이터를 저장하는 데 사용해야하는 데이터 구조 *"입니다. – bernie
@bernie'Field'는'dict'으로 사용되지 않습니다. 따라서 데이터 구조가 최적화 된 'dict'은 중요하지 않습니다. 대신'Item'은 이전에'Field'로 정의한 키에 할당 된 값을 저장하는'dict'으로 사용됩니다. 내가 볼 수있는 한,'Item'은 그냥'namedtuple' 일 수 있습니다. – dAnjou