2016-09-27 1 views
0

это, как я бегу scrapy из Python сценария:Scrapy - итерацию над объектом

def iterate(): 

    process = CrawlerProcess(get_project_settings()) 

    tracks = process.crawl('pitchfork_tracks', domain='pitchfork.com') 

    process.start() 

однако, я не могу iterate через response, что таким образом аа dict:

{'track': [u'\u201cAnxiety\u201d', 
      u'\u201cLockjaw\u201d [ft. Kodak Black]', 
      u'\u201cMelanin Drop\u201d', 
      u'\u201cDreams\u201d', 
      u'\u201cIntern\u201d', 
      u'\u201cYou Don\u2019t Think You Like People Like Me\u201d', 
      u'\u201cFirst Day Out tha Feds\u201d', 
      u'\u201cFemale Vampire\u201d', 
      u'\u201cGirlfriend\u201d', 
      u'\u201cOpposite House\u201d', 
      u'\u201cGirls @\u201d [ft. Chance the Rapper]', 
      u'\u201cI Am a Nightmare\u201d']} 

Как сделать iterate через этот response? Насколько мне известно, до этого момента ответ был object и, следовательно, неистребимым.

+0

'для элемента в ответе ['track']:'? – roganjosh

+0

@roganjosh 'для элемента в дорожках ['track']: AttributeError: Отложенный экземпляр не имеет атрибута '__getitem __'' –

+0

Где вы повторяете ответ? –

ответ

0

Вы должны следить за ходом работы Scrapy Framework. Паук обрабатывает процесс создания запросов и анализирует ответы. ItemPipeline обрабатывает операции с элементами.

Из кода:

tracks = process.crawl('pitchfork_tracks', domain='pitchfork.com') 

pitchfork_tracks это имя паук в вашем проекте. Таким образом, вы должны обрабатывать итерацию по ответу в пауке и выполнять дальнейшую операцию в itempipeline. Для части ItemPipeline вам необходимо вручную настроить параметры сценария scrapy. Проверьте документацию для запуска Scrapy из сценария приближается common practice-run from script

Кстати, согласно документации CrawlerProcess,

треков = process.crawl ('pitchfork_tracks', домен = 'pitchfork.com')

tracks - это твист defer объект, и этот объект не является итерируемым. Если вы не знакомы с внутренней частью скручивания и Scrapy, вам лучше следить за работой Scrapy.

Спасибо.

+0

О, я должен поблагодарить вас –