scrapy 如何对接 selenium?

2019-05-11 10:44:40 +08:00
 911speedstar
单纯用 selenium 爬取数据,效率 真的是慢。但是逆向 js 又搞不定,就想着用 scrapy+selenium+redis,做成分布式,提高爬取效率。请问大佬们,有实现方式吗?或者, 有没有项目可以参考看下。
万分感谢
3046 次点击
所在节点    Python
12 条回复
la2la
2019-05-11 10:56:01 +08:00
selenium 会破坏 scrapy 的异步性吧?感觉快不了多少。如果真的要配合 selenium 的话,可以在下载中间件中用,返回 response 对象,绕开默认下载器
zgoing
2019-05-11 11:59:33 +08:00
和 scrapy 配合使用的好像都是 splash
aquariumm
2019-05-11 12:03:14 +08:00
我的经验是尽可能逆向 js,直接抓最根本的请求,效率巨高
或者用 js 渲染库,scapy 不清楚,requests 和 js 有渲染库的

其实逆向 js 很简单的,js 要么 xhr,要么内置 url 都很好找的
XSugar
2019-05-11 12:40:55 +08:00
middle 里面换掉
Jaho
2019-05-11 14:55:37 +08:00
middleware 中
另:
http://jaho.fun/google.jpg
911speedstar
2019-05-11 17:22:16 +08:00
@zgoing 试过了,因为需要翻页,splash 无法解决
911speedstar
2019-05-11 17:24:08 +08:00
@aquariumm 逆向 js 后的效率,的确会高很多。但是我对 js 语言不是很熟悉,一看到长串的 js,就感觉没头绪。。。
911speedstar
2019-05-11 17:26:08 +08:00
@la2la 效率上应该不会快太多。我是想做成分布式,开 2-4 个 driver 来做,这样比单纯的 selenium 要快一些
911speedstar
2019-05-11 17:26:45 +08:00
@XSugar 试一下了。。
aquariumm
2019-05-11 17:28:17 +08:00
@911speedstar 翻页直接抓包啊,八成是 xhr 实现的
smallgoogle
2019-05-11 23:38:00 +08:00
可以直接把 JS 下载回来。python 载入然后解密呀。这样你只需要找到 js 的加解密函数就可以了呀。
exip
2019-05-12 09:00:35 +08:00
selenium 保存 cookies 后传给 scrapy,等再需要 selenium 上场时 scrapy 再把 cookies 传回来。

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

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

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

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

© 2021 V2EX