2

私はPythonにまったく慣れていないので、数日間、urllib2を使用してCookieを送信しようとしています。したがって、基本的に、取得したいページで、firebugから次のような「送信済みCookie」があることがわかります。

 list_type=height

..基本的にページ上のリストを特定の順序で配置します。

上記のCookie情報をurllib2経由で送信したいので、レンダリングされたページで上記の設定が有効になります。これを機能させるために作成しようとしているコードは次のとおりです。

class Networksx(object):
    def __init__(self):
        self.cj = cookielib.CookieJar()
        self.opener = urllib2.build_opener\
                #socks handler
        self.opener.addheaders = [
        ('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'),
        ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'),
        ('Keep-Alive', '115'),
        ('Connection', 'keep-alive'),
        ('Cache-Control', 'max-age=0'),
        ('Referer', 'http://www.google.com'),
        ("Cookie", {"list_type":"height"}),
    ]
    urllib2.install_opener(self.opener)
    self.params = { 'Set-Cookie': "list_type":"height"}
    self.encoded_params = urllib.urlencode( self.params )

    def fullinfo(self,url):
        return self.opener.open(url,self.encoded_params).read()

..ご覧のとおり、私はいくつかのことを試しました。

  • ヘッダーを介してパラメータを設定する
  • クッキーの設定

ただし、これらは、特定のlist_order(高さ)のページを希望どおりにレンダリングしていないようです。urllib2でCookie情報を送信する方法について誰かが私を正しい方向に向けることができるかどうか疑問に思いました

ありがとう。

4

2 に答える 2

5

cookie.txtを生成する簡単な方法は、次のChrome拡張機能です:https ://chrome.google.com/webstore/detail/cookietxt-export/lopabhfecdfhgogdbojmaicoicjekelh

import urllib2, cookielib

url = 'https://example.com/path/default.aspx'
txheaders =  {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}

cj = cookielib.LWPCookieJar()
# cj.load signature: filename=None, ignore_discard=False, ignore_expires=False
cj.load('/path/to/my/cookies.txt') 

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)

req = urllib2.Request(url, None, txheaders)
handle = urllib2.urlopen(req)

[アップデート]

申し訳ありませんが、長い間忘れられていた古いコードスニペットから貼り付けていました。LWPCookieJar docstringから:

LWPCookieJarは、一連の「Set-Cookie3」行を保存します。「Set-Cookie3」はlibwww-perlライブラリで使用される形式であり、どのブラウザとも互換性があることは知られていませんが、読みやすく、RFC2965Cookieに関する情報を失うことはありません。

そのため、最新のブラウザで生成されたcookie.txtとは互換性がありません。一緒にロードしようとすると、次のようになりますLoadError: 'cookies.txt' does not look like a Set-Cookie3 (LWP) format file

OPとして実行し、ファイルを変換できます。

Chrome拡張機能からの出力の形式に問題があります。lwpの問題をグーグルで検索したところ、次のことがわかりました。code.activestate.com/recipes/302930-cookielib-exampleコードがlwp形式でCookieを吐き出し、そのまま手順に従います。-ジェームズW

このFirefoxアドオンを使用してから、[ツール]->[Cookieのエクスポート]を使用することもできます。Cookies.txtファイルの最初の行が「#Netscape HTTP Cookie File」であることを確認し、次を使用します。

cj = cookielib.MozillaCookieJar('/path/to/my/cookies.txt')
cj.load() 
于 2013-03-09T15:40:36.000 に答える
0

Pythonの「request」モジュールを調べて、低レベルのurllibモジュールを使用するよりもHTTPをはるかに簡単に利用できるようにすることをお勧めします。

見る

http://docs.python-requests.org/en/latest/user/quickstart/#cookies

于 2013-03-09T15:28:17.810 に答える