首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scrapy - iterate over object

Scrapy - iterate over object
EN

Stack Overflow用户
提问于 2016-09-28 02:24:35
回答 1查看 171关注 0票数 0

这就是我从Python脚本运行scrapy的方式:

代码语言:javascript
复制
def iterate():

    process = CrawlerProcess(get_project_settings())

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

    process.start() 

然而,我似乎不能通过response进行iterate,它是一种这样的dict

代码语言:javascript
复制
{'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']}

如何通过此response执行iterate操作?据我所知,到目前为止,响应是一个object,因此是不可迭代的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-28 03:24:45

你应该遵循Scrapy Framework的工作流程。Spider处理如何构建请求和解析响应。ItemPipeline处理项目的操作方式。

从你的代码中:

代码语言:javascript
复制
tracks = process.crawl('pitchfork_tracks', domain='pitchfork.com')

pitchfork_tracks是项目中的爬行器名称。因此,您应该在爬行器中处理响应的迭代,并在itempipeline中进行进一步的操作。对于ItemPipeline部件,您需要手动配置scrapy脚本的设置。检查文档以从script approaches common practice-run from script运行scrapy

顺便说一句,根据CrawlerProcess的文件,

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

tracks是一个扭曲的defer对象,这个对象是不可迭代的。除非你熟悉twist和Scrapy的内部部分,否则你最好遵循Scrapy框架的工作流程。

谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39731804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档