V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
911speedstar
V2EX  ›  Python

scrapy 如何对接 selenium?

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

    其实逆向 js 很简单的,js 要么 xhr,要么内置 url 都很好找的
    XSugar
        4
    XSugar  
       2019-05-11 12:40:55 +08:00 via iPhone
    middle 里面换掉
    Jaho
        5
    Jaho  
       2019-05-11 14:55:37 +08:00
    middleware 中
    另:
    http://jaho.fun/google.jpg
    911speedstar
        6
    911speedstar  
    OP
       2019-05-11 17:22:16 +08:00
    @zgoing 试过了,因为需要翻页,splash 无法解决
    911speedstar
        7
    911speedstar  
    OP
       2019-05-11 17:24:08 +08:00
    @aquariumm 逆向 js 后的效率,的确会高很多。但是我对 js 语言不是很熟悉,一看到长串的 js,就感觉没头绪。。。
    911speedstar
        8
    911speedstar  
    OP
       2019-05-11 17:26:08 +08:00
    @la2la 效率上应该不会快太多。我是想做成分布式,开 2-4 个 driver 来做,这样比单纯的 selenium 要快一些
    911speedstar
        9
    911speedstar  
    OP
       2019-05-11 17:26:45 +08:00
    @XSugar 试一下了。。
    aquariumm
        10
    aquariumm  
       2019-05-11 17:28:17 +08:00 via Android
    @911speedstar 翻页直接抓包啊,八成是 xhr 实现的
    smallgoogle
        11
    smallgoogle  
       2019-05-11 23:38:00 +08:00
    可以直接把 JS 下载回来。python 载入然后解密呀。这样你只需要找到 js 的加解密函数就可以了呀。
    exip
        12
    exip  
       2019-05-12 09:00:35 +08:00 via Android
    selenium 保存 cookies 后传给 scrapy,等再需要 selenium 上场时 scrapy 再把 cookies 传回来。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1724 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:30 · PVG 00:30 · LAX 08:30 · JFK 11:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.