【问题标题】:Extract cookies from open Safari session in Python从 Python 中打开的 Safari 会话中提取 cookie
【发布时间】:2015-07-30 17:20:39
【问题描述】:

试着按照这个例子:

Python urllib2 login to minecraft.net

我正在尝试从该网站获取文件,单击以获取每个文件是一个乏味的过程。我可以很容易地使用 urllib2 进行网页抓取,但当然,您必须登录到该网站才能获取数据。我尝试在 Python 中执行一种登录类型方法,但无法使其正常工作。

我的另一个选择是从 Safari 会话中导出 cookie,这样我就可以运行我的网页抓取脚本来获取我需要的数据。

有人知道如何将 Safari 会话中的 cookie 导出到 Python 以访问网站数据吗?

【问题讨论】:

  • 使用 getpostman.com 查看 cookie 和您拨打的所有电话,但您需要 Chrome 才能使用它
  • 另外,为什么不使用 requests Session 对象来拥有一个 cookie jar 并使用他们的 HTTPAuth 方法呢??
  • @heinst 嘿,谢谢!你能把我链接到一个使用请求会话对象的例子吗?
  • 您要从中下载文件的站点的网址是什么?

标签: python http cookies web urllib2


【解决方案1】:

这将允许您登录并下载文件,它使用 BeautifulSoup 和 Requests:

#!/usr/bin/python
from bs4 import BeautifulSoup
import requests


def download_file(url):
    local_filename = url.split('/')[-1]
    # NOTE the stream=True parameter
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
                f.flush()
    return local_filename

s = requests.Session()

soup = BeautifulSoup(s.get("https://minecraft.net/login").content)

authToken = soup.find('form', attrs={'id': 'loginForm'}).findNext('input')['value']

data = {
    "username": "USERNAME",
    "password": "PASSWORD",
    "remember": "true",
    "authenticityToken": authToken
}

s.post("https://minecraft.net/login", data=data)
soup = BeautifulSoup(s.get("https://minecraft.net//download").content)
download_file(soup.find("div", attrs={'id': 'platform-osx'}).findNext('p').findNext('')['href'])

【讨论】:

    猜你喜欢
    • 2016-04-02
    • 2015-02-14
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 2012-08-09
    • 2019-02-15
    相关资源
    最近更新 更多