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

Python 爬虫如何执行页面中的 js 函数

  •  
  •   jedyu · 2015-03-13 09:02:01 +08:00 · 9576 次点击
    这是一个创建于 3537 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如在页面中定义了A函数,我想爬下页面后,执行A,查看结果是什么。试了下pyV8没成功,是我的姿势不对吗?
    25 条回复    2015-07-29 22:28:45 +08:00
    zealic
        1
    zealic  
       2015-03-13 09:03:00 +08:00   ❤️ 2
    那就不叫爬了,叫模拟浏览:
    参考 Casper.js 以及 PhantomJS
    arachide
        2
    arachide  
       2015-03-13 09:30:34 +08:00   ❤️ 1
    精确掌握这个技术的目前貌似只有google
    icedx
        3
    icedx  
       2015-03-13 09:39:23 +08:00 via Android   ❤️ 1
    PyQt 内置浏览器模拟浏览
    xunyu
        4
    xunyu  
       2015-03-13 09:46:51 +08:00   ❤️ 2
    saihuang
        5
    saihuang  
       2015-03-13 10:02:24 +08:00   ❤️ 1
    看一下selenium和phantomjs
    nomaka
        6
    nomaka  
       2015-03-13 10:03:53 +08:00   ❤️ 2
    selenium
    shoumu
        7
    shoumu  
       2015-03-13 10:05:10 +08:00   ❤️ 1
    PhantomJs
    dingyaguang117
        8
    dingyaguang117  
       2015-03-13 12:10:13 +08:00   ❤️ 1
    PhantomJs +1
    jedyu
        9
    jedyu  
    OP
       2015-03-13 13:09:32 +08:00
    @xunyu Ghost好像就是在pyV8上封装了一层

    @icedx 就是想通过脚本
    tabris17
        10
    tabris17  
       2015-03-13 13:22:07 +08:00   ❤️ 1
    @jedyu pyv8只是封装了个v8引擎,无法执行web页面的里的js
    icedx
        11
    icedx  
       2015-03-13 13:25:50 +08:00 via Android
    @jedyu PyQt 这是脚本阿
    jedyu
        12
    jedyu  
    OP
       2015-03-13 13:39:54 +08:00
    @tabris17 确实,window这些都要自己写类,写不全还跑不了
    poke707
        13
    poke707  
       2015-03-13 17:24:38 +08:00   ❤️ 1
    如果你的目的是挖出js里面调用的ajax, 可以直接用chrome调试模式找出来URL来
    leonlu
        14
    leonlu  
       2015-03-13 17:31:46 +08:00   ❤️ 1
    python爬虫可以删掉,用phathomjs重新写一份了。
    jedyu
        15
    jedyu  
    OP
       2015-03-13 17:45:48 +08:00
    @poke707 我是为了获取一个加密的值,用于一个请求,可这个加密算法的js被混淆了,只有一个入口函数
    icedx
        16
    icedx  
       2015-03-13 18:17:58 +08:00 via Android
    @jedyu 你就顺着它逻辑写呗J's 混淆能到什么程度
    kchum
        17
    kchum  
       2015-03-14 01:28:26 +08:00
    PhantomJs 一劳永逸。再混淆你又要看一次。
    gaotongfei
        18
    gaotongfei  
       2015-03-14 10:45:41 +08:00   ❤️ 1
    我都是用selenium-webdriver的
    gaotongfei
        19
    gaotongfei  
       2015-03-14 10:47:49 +08:00
    tonic
        20
    tonic  
       2015-03-14 15:58:30 +08:00
    可以试试 PyExecJS
    jedyu
        21
    jedyu  
    OP
       2015-03-16 09:44:11 +08:00
    @tonic PyExecJS试了不行
    @icedx 太多了。。。
    xunyu
        22
    xunyu  
       2015-03-16 09:49:01 +08:00
    @jedyu 什么页面,我之前也是碰到加密,后来懒得看,全部丢给ghost.py处理了
    icedx
        23
    icedx  
       2015-03-16 11:34:42 +08:00 via Android
    @jedyu 都是人写的
    hadesqiao
        24
    hadesqiao  
       2015-03-16 15:18:23 +08:00
    mark01
    vincent123456
        25
    vincent123456  
       2015-07-29 22:28:45 +08:00
    @icedx 话不能这么说,有些变态网站JS写的复杂的狠,例如QQ的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:32 · PVG 11:32 · LAX 19:32 · JFK 22:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.