如何在前端用 api 同时调用多个 scrapy 编写的爬虫?

2018-11-04 16:34:28 +08:00
 111qqz

最近在学习爬虫,使用了 scrapy。 一个需要是,用户在浏览器输入关键词,然后返回爬取的 url 给用户。 调研发现了 scrapyd 和 scrapyrt 但是发现 scrapyd 没有办法返回自定义的 response. 于是又使用了 scrapyrt,但是发现无法同时处理多个用户的请求。 所以来求助各位 orz 总结一下,我的问题是:

1911 次点击
所在节点    Python
2 条回复
locoz
2018-11-08 13:00:04 +08:00
挽尊
这个需求不太适合直接使用 scrapy 来做,可以用 web 框架+http 请求库,把爬虫做成接口的形式。比如使用 flask+requests,简单粗暴就能实现;或者是用 tornado 这种自带 server 和 client 的,又不需要特殊处理性能问题、又能在不依赖其他 http 请求库的情况下发出 http 请求。
部署方面多容器做负载均衡是可以的,但是如果是在同一台机器下启动多个的话其实意义不大。
111qqz
2018-11-08 14:19:44 +08:00
@locoz 感谢回复. 确实发现直接使用 scrapy 不太合适了. 不过当时需求比较紧急,就暂时使用了启动多个 docker 实例来同时处理请求的解决办法,前端用循环队列每次发 request 到一个不同的端口.可能是由于需要同时用的人不会很多,所以效果还挺好的.不过这肯定不是长久之计,现在已经按照你的思路,使用了 django + scrapyd,做成了接口的形式.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/504335

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX