一个像蜘蛛回调那样写协同程序的装饰器。
scrapy-inline-requests的Python项目详细描述
零星内联请求
一个像蜘蛛回调那样写协同程序的装饰器
- 自由软件:麻省理工学院许可证
- 文档:https://scrapy-inline-requests.readthedocs.org
- Python版本:2.7、3.4+
快速启动
下面的爬行器显示了一个简单的使用案例,它可以抓取一个页面并跟随几个链接:
frominline_requestsimportinline_requestsfromscrapyimportSpider,RequestclassMySpider(Spider):name='myspider'start_urls=['http://httpbin.org/html']@inline_requestsdefparse(self,response):urls=[response.url]foriinrange(10):next_url=response.urljoin('?page=%d'%i)try:next_resp=yieldRequest(next_url)urls.append(next_resp.url)exceptException:self.logger.info("Failed request %s",i,exc_info=True)yield{'urls':urls}
有关更复杂的蜘蛛,请参见examples/目录。
警告
当处理请求的响应时,生成器恢复其执行, 这意味着生成器在生成一个项目或请求后将无法恢复 有自己的回拨
已知问题
- Middleware可以删除或忽略导致回调的非200状态响应 不继续执行。这可以通过使用标志来克服 handle_httpstatus_all。请参阅httperror middleware文档。
- 高并发性和大响应会导致更高的内存使用率。
- 此装饰器假定您的方法具有以下签名 (self, response)。
- 包装的请求可能无法由持久后端序列化。
- 除非你知道你在做什么,否则装饰的方法一定是蜘蛛 方法并返回一个generator实例。
历史记录
0.3.1(2016-07-04)
- 添加了关于修饰非蜘蛛函数的建议
- 如果回调返回设置了回调或errback的请求,则发出警告这个 用回调还原请求的兼容性。
0.3.0(2016-06-24)
- ~~向后不兼容更改:向请求对象添加了更多限制(无回调/错误返回)。~~~
- 在将请求发送回 发电机。这将修复使用request.replace()时的边大小写。
- 简化的蜘蛛示例。
0.2.0(2016-06-23)
- 支持Python3。
0.1.2(2016-05-22)
- 零星的API和文档更新
0.1.1(2013-02-03)
- 小调整和修复。
0.1.0(2012-02-03)
- pypi上的第一个版本。