Python 爬虫解决登录问题的另类方法

March 17, 2015 | 00:14

爬虫爬网站不免遇到需要登录的问题. 登录的时候可能还会碰到需要填验证码的问题, 有的验证码甚至是拖动拼图来完成的. 虽然现在这些都有开源解决方案, 但是假设现在只是自己做个小小的不具规模的爬虫来玩一玩; 或者主要的精力想要放在如何解析 html, 或者验证抓取算法上, 而不是通过登录验证上, 那么开源解决方案并不是最好的解决方案.

更好的方案是获取浏览器的 Cookies, 然后让 requests 这个库来直接使用登录好的 Cookies. 下面给出一个 get_chrome_cookies(url) 函数, 可以获取 Chrome 浏览器的 Cookies 信息. 程序在 Windows 下调试通过, 因为 C 盘需要特殊权限来读写文件, 因此程序先将 Cookies 数据库文件拷贝到 D 盘. 该方法用到了第三方库 win32crypt.

 

使用方法: x = requests.get(url, cookies = get_chrome_cookies(domain))

 

登录知乎: x = requests.get("http://www.zhihu.com, cookies=get_chrome_cookies(".zhihu.com"))

 

( 转载请注明: Jecvay Notes )

多达 12 条吐槽

  • wwwwwwwq
    2015/03/18

    这解决方案真机智!

  • fengchang
    2015/03/18

    这样我都嫌麻烦,我都是直接在浏览器console里输入document.cookie,复制出来贴到代码里的

    • 2015/03/18

      我之前试了一两次失败了我还以为这个方法不行咧! 我再试试.

    • 2015/04/04

      document.cookie 只能获取到 http://www.domain.com 的 cookies, 如何能获取 .domain.com 的呢?

    • 2016/04/02

      你好问一下我直接输入document.cookies输出为undefined,这是为什么啊

  • 2015/11/21

    我也想要这个功能

    之前都是靠插件来实现。

  • www
    2015/12/08

    alert("WELL")

  • zxf
    2015/12/14

    请问win32crypt模块在哪?我用pip安装不了?

  • 2016/04/01

    可以直接利用fiddler获取cookies么

  • anyone
    2016/07/13

    for row in conn.execute("select host_key, name, path, value, encrypted_value from cookies"):sqlite3.DatabaseError: malformed database schema (is_transient) - near "where": syntax error得到以上错误提示, 并没有看到where, 为什么会提示where语法错误?

  • Jecvay
    2016/12/06

    1. xxxxx
    2. xxxxx
    3. yyyyy
    4. yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy

  • Jecvay
    2016/12/06

    如果这里有代码

说几句