2009-02-08 30 views
10

Làm cách nào để chấp nhận cookie trong tập lệnh python?Chấp nhận cookie bằng Python

+0

Có thể bạn nên cụ thể hơn. Bạn đang cố gắng để thực hiện? Bạn đang sử dụng khung làm việc nào, nếu có? –

Trả lời

1

Tôi tin rằng bạn có nghĩa là có tập lệnh Python cố gắng nói HTTP. Tôi khuyên bạn nên sử dụng thư viện cấp cao xử lý cookie tự động. pycurl, cơ giới hóa, twill - bạn chọn.

Đối với Nikhil Chelliah:

Tôi không thấy điều gì không rõ ràng ở đây.

Chấp nhận cookie xảy ra ở phía máy khách. Máy chủ có thể đặt cookie.

+1

Máy chủ cũng có thể nhận cookie từ ứng dụng khách. Sau đó, một lần nữa, "chấp nhận" có thể chỉ là một thuật ngữ hợp lệ cho khách hàng. –

+0

+ để đề cập đến cơ giới hóa – Alex

0

Có thư viện cookielib. Bạn cũng có thể triển khai chính sách lưu trữ và chính sách cookie của riêng mình, cookie được tìm thấy trong tiêu đề cookie đặt của phản hồi (Set-Cookie: name = value), sau đó bạn gửi lại cho máy chủ trong một hoặc nhiều tiêu đề Cookie trong request (Cookie: name = value).

1

Không rõ liệu bạn có muốn giải pháp phía máy khách hoặc giải pháp phía máy chủ hay không.

Đối với phía máy khách, cookielib sẽ hoạt động tốt. This answer và một vài hướng dẫn web cung cấp giải thích chi tiết hơn.

Nếu đây là vấn đề phía máy chủ, bạn nên sử dụng khung làm việc chăm sóc tất cả các bản mẫu. Tôi thực sự thích cách CherryPyweb.py xử lý chúng, nhưng API khá đơn giản trong bất kỳ thư viện nào.

18

Hãy thử điều này:

import urllib2 
import cookielib 

jar = cookielib.FileCookieJar("cookies") 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar)) 

print "Currently have %d cookies" % len(jar) 
print "Getting page" 
response = opener.open("http://google.com") 
print response.headers 
print "Got page" 
print "Currently have %d cookies" % len(jar) 
print jar 

Nó nên in

Currently have 0 cookies 
... 
Currently have 2 cookies 

(Google luôn đặt một cookie). Bạn không thực sự cần điều này nhiều trừ khi bạn muốn lưu cookie của bạn vào đĩa và sử dụng chúng sau này. Bạn sẽ thấy rằng

urllib2.build_opener(HTTPCookieProcessor).open(url) 

Tận dụng tối đa những gì bạn muốn.

Thông tin thêm ở đây:

4

Cách đơn giản nhất là sử dụng requests thư viện.

import requests 
url = 'http://www.google.com/doodles/' 
r = requests.get(url) 
print r.cookies 
Các vấn đề liên quan