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

爬虫爬网站时,遇到有些网站会有javascript进行cookie认证,有什么好办法能处理吗??

  •  
  •   lewisc402 · 2013-08-08 16:40:05 +08:00 · 6066 次点击
    这是一个创建于 4158 天前的主题,其中的信息可能已经有所发展或是发生改变。
    15 条回复    1970-01-01 08:00:00 +08:00
    lewisc402
        1
    lewisc402  
    OP
       2013-08-08 16:45:46 +08:00
    假设我想访问 a.html,结果服务器会重定向到 redirect.html?url=a.html,而redirect.html中是一些javascript代码,用来写cookie,那么我该怎么办才能访问到原网页呢? 求思路???
    binux
        2
    binux  
       2013-08-08 16:54:13 +08:00
    @lewisc402 手动提出来
    lewisc402
        3
    lewisc402  
    OP
       2013-08-08 16:56:35 +08:00
    @binux 没理解?? 能详细说下吗
    DearMark
        4
    DearMark  
       2013-08-08 17:03:29 +08:00
    我也表示非常关注!
    binux
        5
    binux  
       2013-08-08 17:07:17 +08:00
    @lewisc402 打开redirect.html,解析js代码,提出js写入的cookie
    pubby
        6
    pubby  
       2013-08-08 17:10:30 +08:00
    分析出来然后在爬虫中模拟
    pandada8
        7
    pandada8  
       2013-08-08 18:11:34 +08:00
    如果客户端的js用了某种算法的生成数据可以考虑在脚本中模拟一下算法,生成数据
    或者直接使用 Headless 的框架 Zombie.js,Ghost.py,或者直接操作 selenium ……
    pubby
        8
    pubby  
       2013-08-08 18:22:00 +08:00
    @pandada8 同意,如果算法太复杂,可以直接把js代码丢给node.js跑出结果再用
    pandada8
        9
    pandada8  
       2013-08-08 18:30:27 +08:00
    参见 http://obmem.info/?p=848 别人写的……
    pythoner
        10
    pythoner  
       2013-08-08 18:34:45 +08:00
    @pandada8 擦,看到我同事的博客了~~
    RelativeLayout
        11
    RelativeLayout  
       2013-08-08 18:38:06 +08:00
    casperjs 或者 phantomjs
    pandada8
        12
    pandada8  
       2013-08-08 18:59:16 +08:00
    @pythoner - =以前SimpleCD出来的时候关注的……
    yuan
        13
    yuan  
       2013-08-08 19:33:46 +08:00
    使用现有的cookie:

    Chrome 的 cookietxt-export 扩展( https://chrome.google.com/webstore/detail/cookietxt-export/lopabhfecdfhgogdbojmaicoicjekelh )可以将cookie导出为 wget 可识别的格式。安装好该插件后,登录需要抓取的网站,点击插件按钮,就可以导出为 Netscape 的 cookies.txt 格式。

    如果使用 Ruby ,可以用

    agent = Mechanize.new
    agent.cookie_jar.load(cookies_txt_file, :cookiestxt)

    Python 应该有类似的工具吧
    lewisc402
        14
    lewisc402  
    OP
       2013-08-08 22:14:29 +08:00
    @yuan 这个方法看起来不错,先尝试下
    soho176
        15
    soho176  
       2013-08-08 22:20:59 +08:00
    @pandada8 这个博客 我以前也看 后来找不到地址了哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3063 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:18 · PVG 08:18 · LAX 16:18 · JFK 19:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.