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
K1W1
V2EX  ›  Python

讨论一个关闭爬虫的脑洞问题

  •  
  •   K1W1 · 2017-09-25 14:19:02 +08:00 · 6307 次点击
    这是一个创建于 2404 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在写爬虫,那些简单的还好,稍等有点安全意识的网站,都是 https + 一大堆 js 加密算法。而且每个网站都不相同。这太耗时间与精力了。
    所以我在想有没有 python 框架,可以实现内嵌一个浏览器,这个浏览器要支持方法调用,比如传个地址,修改某些表单 dom 的数据。而且还能拿到页面的内容。我查了一下 Python 内嵌浏览器还是有的,但是可能不支持调用。获得数据可以通过 python 实现一个代理服务器来拿。
    请问各位大神有没有相应的框架或者思路?
    我发现谷歌有几款插件支持类似的功能,但是我还想 python 原生实现 插件

    28 条回复    2017-09-28 01:19:01 +08:00
    tscat
        1
    tscat  
       2017-09-25 14:25:57 +08:00   ❤️ 1
    你是在说 selenium ?
    Coder0
        2
    Coder0  
       2017-09-25 14:29:03 +08:00   ❤️ 1
    selenium
    timwei
        3
    timwei  
       2017-09-25 14:37:00 +08:00   ❤️ 1
    Python 有个封装 selenium 的包叫做 splinter

    https://github.com/cobrateam/splinter
    90safe
        4
    90safe  
       2017-09-25 14:37:50 +08:00   ❤️ 1
    前些天写微博爬虫的时候,思考过这个问题,感觉可以写个 chrome or firefox 插件来爬,可将结果存到本地或者 post 传到指定服务器上。
    smgui
        5
    smgui  
       2017-09-25 14:47:59 +08:00   ❤️ 2
    headless 咯
    nilai
        6
    nilai  
       2017-09-25 14:52:09 +08:00   ❤️ 2
    google headless
    K1W1
        7
    K1W1  
    OP
       2017-09-25 14:58:00 +08:00
    @timwei #3 谢谢,selenium 我以为只是测试用的构架,涨知道了
    K1W1
        8
    K1W1  
    OP
       2017-09-25 14:58:19 +08:00
    @smgui #5 谢谢,好东西
    K1W1
        9
    K1W1  
    OP
       2017-09-25 14:58:37 +08:00
    @nilai #6 谢谢,我去学一下
    K1W1
        10
    K1W1  
    OP
       2017-09-25 14:59:33 +08:00
    @90safe #4 嗯,浏览器插件到是挺多
    VShawn
        11
    VShawn  
       2017-09-25 15:09:11 +08:00
    两年前我写的一个小说爬虫就是内嵌了一个浏览器,结果没有搞定动态操作浏览器的 DOM
    timwei
        12
    timwei  
       2017-09-25 15:15:07 +08:00   ❤️ 2
    我工具党

    我只是需要解析 DOM 的话,通常直接用 Xpath

    需要 cookie 支持的话(用户验证、部分 asp.net 应用),会改用 Mechanize

    如需执行 JS 才会用到 Selenium w/ Chrome,Firefox,PhantomJS
    Outshine
        13
    Outshine  
       2017-09-25 16:15:57 +08:00   ❤️ 2
    谷歌浏览器团队出了一个`puppeteer`,不过是 nodejs 的,楼主可以试试(其实也是用 headless browser )
    K1W1
        14
    K1W1  
    OP
       2017-09-25 16:21:28 +08:00
    @Outshine #13 好的,谢谢
    syhsyh9696
        15
    syhsyh9696  
       2017-09-25 16:21:36 +08:00
    Selenium 真的好慢好慢啊,这样搞效率太低
    gamecreating
        16
    gamecreating  
       2017-09-25 16:31:20 +08:00
    phantomjs
    yankebupt
        17
    yankebupt  
       2017-09-25 16:35:59 +08:00   ❤️ 1
    参考目前闲鱼的防抓取:
    ---
    * 不登录只循环显示少量资料
    * 电脑端不登录,通过首页链接点击进入物品详情时限制物品类别数目,超出物品类别强制登陆否则不予显示
    * 根据个人搜索记录强推个性化内容,每个人个性化内容不同无法查看全部资料,除非使用大量关键字搜索
    * 对于大量关键字盲目搜索超标的,判定为抓取者,返回第一条,默认循环显示不登陆时显示的少量资料
    ---
    感觉很独裁,但是没辙,除了芝麻信用基本没什么能用可信任的第三方征信平台。
    ---
    我不知道要有什么样的技术突破才能避免以后做大了的服务都逐渐参考这种模式。简直反乌托邦
    K1W1
        18
    K1W1  
    OP
       2017-09-25 17:20:19 +08:00
    @gamecreating #16 嗯,我现在在尝试 selenium + phantomjs 去实现
    kenshinji
        19
    kenshinji  
       2017-09-25 17:23:34 +08:00
    @yankebupt 嗯嗯。。。闲鱼登录挺麻烦的
    K1W1
        20
    K1W1  
    OP
       2017-09-25 17:33:52 +08:00
    @yankebupt #17 这种不登录只能看部分内容,登录了只能看账号绑定的推荐个性化的的内容是有点头大。目前来看也只能注册 n 个账号,每个账号偏向不同的类型搜索了。
    yankebupt
        21
    yankebupt  
       2017-09-25 19:48:47 +08:00   ❤️ 1
    @K1W1
    目前只用多个账号都不行,得多个账号配合多地点 ISP 接入+定位配合多设备串号...
    我 ios 装过一次闲鱼,卸载清空都不行,重装换 appleid 之后原来的推荐不消除...
    K1W1
        22
    K1W1  
    OP
       2017-09-25 20:08:56 +08:00
    @yankebupt #21 我服,这也是绝了
    mooncakejs
        23
    mooncakejs  
       2017-09-25 20:25:35 +08:00
    此种高级的爬虫还是用 js 写吧。 headless 浏览器或者 chrome 插件。
    nVic
        24
    nVic  
       2017-09-25 20:53:06 +08:00 via iPhone
    @yankebupt 记得霍炬有一篇文章,互联网完了。互联网现在基本已经中心化了,正在朝着文章中的方向走。
    kltt22
        25
    kltt22  
       2017-09-26 08:51:40 +08:00
    PhantomJS 效率太差了,要是数据量少的话还行,上百万就很要命了。
    K1W1
        26
    K1W1  
    OP
       2017-09-26 09:15:06 +08:00
    @kltt22 #25 并且这个项目已经很少维护了,还是 headless 比较有发展
    shawndev
        27
    shawndev  
       2017-09-28 01:15:21 +08:00
    selenium + chrome headless mode
    shawndev
        28
    shawndev  
       2017-09-28 01:19:01 +08:00   ❤️ 1
    @yankebupt
    可以观察几项内容,是不是写入了 keychain ?
    是不是通过 safari controller 写入了 cookie 来记录状态?
    是不是通过 app group 保存了相关记录?
    尝试清除隐私信息来重置 idfa 看看有没有变化。
    如果没有,尝试更换 Wifi 和 IP 地址重新访问。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3621 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:42 · PVG 18:42 · LAX 03:42 · JFK 06:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.