从Python中打开Safari会话中提取cookie

时间:2015-07-30 17:20:39

标签: python http cookies web urllib2

尝试遵循这一个例子:

Python urllib2 login to minecraft.net

我试图从这个网站获取文件,这是一个单击以获取每个文件的繁琐过程。我可以很容易地使用urllib2来webscrape,当然,你必须登录到这个网站来获取数据。我尝试在Python中使用其中一种登录类型方法,但我无法使其工作。

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

是否有人知道如何将Cookie从Safari会话导出到Python以访问网站数据?

1 个答案:

答案 0 :(得分:0)

这将允许您登录和下载文件,这使用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'])