Urllibライブラリの使用9---ステップ4(Cookiejarの使用)
4848 ワード
前編のコードでは、実はCookieを取得し、Cookieを通じてウェブページのデータを要求することが実現されていることがわかりますが、これは明らかに柔軟ではなく、複雑ではありません.私たちは少し便利な方法がありますか?
CookiejarライブラリとHTTPCookieProcessorプロセッサはPythonでCookieを処理し、一般的にcookiejarモジュールとurllibモジュールのHTTPCookieProcessorプロセッサクラスで使用される.
Cookiejarモジュール:主な役割は、cookieを格納するオブジェクトHTTPCookieProcessorプロセッサを提供することです.主な役割は、これらのcookieオブジェクトを処理し、handlerオブジェクトを構築することです.
Cookiejarライブラリこのモジュールの主なオブジェクトはCookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJarである.
CookieJar:HTTPクッキーの値を管理し、HTTPリクエストによって生成されたクッキーを格納し、送信されたHTTPリクエストにクッキーを追加するオブジェクト.クッキー全体がメモリに格納され、クッキーJarインスタンスをゴミ回収するとクッキーも失われます.
FileCookieJar(filename,delayload=None,policy=None):CookieJarから派生し、FileCookieJarインスタンスを作成し、cookie情報を取得してファイルに格納するために使用されます.filenameはクッキーを格納するファイル名です.delayloadがTrueの場合、必要に応じてファイルを読み込むか、ファイルにデータを格納するかの遅延アクセスファイルがサポートされます.
MozillaCookieJar(filename,delayload=None,policy=None):FileCookieJarから派生してMozillaブラウザcookiesを作成する.txt互換性のあるFileCookieJarインスタンス.
LWPCookieJar(filename,delayload=None,policy=None):FileCookieJarから派生し、libwww-perl規格のSet-Cookie 3ファイルフォーマットと互換性のあるFileCookieJarインスタンスを作成します.
ほとんどの場合、CookieJar()のみを使用し、ローカルファイルと対話する必要がある場合はMozillaCookjar()を使用します.
インスタンス1
Cookieを取得し、CookieJar()オブジェクトに保存します.
インスタンス2
MozillaCookjar()を使用してWebサイトまたはクッキーにアクセスし、作成したクッキーファイルに保存します.
例3
MozillaCookjar()ファイルからcookiesを取得し、リクエストの一部としてアクセス
cookiejarとpostシミュレーションログイン人人網
シミュレーション・ログインでは、次の点に注意してください.ログインは、一般的に、いくつかの情報を引き出し、Cookieを取得してからHTTP POSTログインするためのHTTP GETがあります. HTTP POST登録のリンクが動的である可能性があり、GETから返された情報から取得する. passwordは明文で送信されるものもあれば、暗号化されて送信されるものもあります.一部のサイトでは動的暗号化を採用しているが、他の多くのデータの暗号化情報も含まれており、JSソースコードを表示することで暗号化アルゴリズムを取得し、暗号化を解読することは非常に困難である. ほとんどのWebサイトのログイン全体の流れは似ています.詳細が異なる場合があります.そのため、他のWebサイトのログインが成功することを保証することはできません.
CookiejarライブラリとHTTPCookieProcessorプロセッサ
Cookiejarモジュール:主な役割は、cookieを格納するオブジェクトHTTPCookieProcessorプロセッサを提供することです.主な役割は、これらのcookieオブジェクトを処理し、handlerオブジェクトを構築することです.
Cookiejarライブラリ
CookieJar:HTTPクッキーの値を管理し、HTTPリクエストによって生成されたクッキーを格納し、送信されたHTTPリクエストにクッキーを追加するオブジェクト.クッキー全体がメモリに格納され、クッキーJarインスタンスをゴミ回収するとクッキーも失われます.
FileCookieJar(filename,delayload=None,policy=None):CookieJarから派生し、FileCookieJarインスタンスを作成し、cookie情報を取得してファイルに格納するために使用されます.filenameはクッキーを格納するファイル名です.delayloadがTrueの場合、必要に応じてファイルを読み込むか、ファイルにデータを格納するかの遅延アクセスファイルがサポートされます.
MozillaCookieJar(filename,delayload=None,policy=None):FileCookieJarから派生してMozillaブラウザcookiesを作成する.txt互換性のあるFileCookieJarインスタンス.
LWPCookieJar(filename,delayload=None,policy=None):FileCookieJarから派生し、libwww-perl規格のSet-Cookie 3ファイルフォーマットと互換性のあるFileCookieJarインスタンスを作成します.
ほとんどの場合、CookieJar()のみを使用し、ローカルファイルと対話する必要がある場合はMozillaCookjar()を使用します.
インスタンス1
Cookieを取得し、CookieJar()オブジェクトに保存します.
# urllib_cookiejar_test1.py
import urllib
from http import cookiejar
# CookieJar cookie
cookiejar = cookiejar.CookieJar()
# HTTPCookieProcessor() cookie , CookieJar()
handler=urllib.request.HTTPCookieProcessor(cookiejar)
# build_opener() opener
opener = urllib.request.build_opener(handler)
# 4. get , cookie cookiejar
opener.open("http://www.baidu.com")
## Cookie
cookieStr = ""
for item in cookiejar:
cookieStr = cookieStr + item.name + "=" + item.value + ";"
##
print (cookieStr[:-1])
# Cookie cookiejar
インスタンス2
MozillaCookjar()を使用してWebサイトまたはクッキーにアクセスし、作成したクッキーファイルに保存します.
import urllib.request
import http.cookiejar
#
filename = 'cookie.txt'
# MozillaCookieJar ,MozillaCookieJar (filename,delayload=None,policy=None)
cookiejar = http.cookiejar.MozillaCookieJar(filename)
# HTTPCookieProcessor() cookie
handler = urllib.request.HTTPCookieProcessor(cookiejar)
# build_opener() opener
opener = urllib.request.build_opener(handler)
# opener.open
response = opener.open('http://www.baidu.com')
# cookie ,cookie.txt
cookiejar.save()
例3
MozillaCookjar()ファイルからcookiesを取得し、リクエストの一部としてアクセス
import urllib.request
import http.cookiejar as cookiejar
#
cookiejar = cookiejar.MozillaCookieJar()
# cookie
cookiejar.load('cookie.txt')
for i in cookiejar:
print(i.name,i.value)
cookiejarとpostシミュレーションログイン人人網
シミュレーション・ログインでは、次の点に注意してください.
# -*- coding:utf-8 -*-
import urllib.request
import http.cookiejar as cookiejar
from urllib import parse
#1. CookieJar cookie
cookie = cookiejar.CookieJar()
# 2. HTTPCookieProcessor() cookie ,
# CookieJar()
cookie_handler = urllib.request.HTTPCookieProcessor(cookie)
#3. build_opener() opener
opener = urllib.request.build_opener(cookie_handler)
#4.addheaders , headers
#opener header
opener.addheaders = [
('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:59.0) Gecko/20100101 Firefox/59.0'),
]
#5.
data = {
'email':' ',
'password':' ',
}
#6. urlencode()
postdata = parse.urlencode(data).encode('utf-8')
#7. Request ,
request = urllib.request.Request("http://www.renren.com/PLogin.do", data = postdata)
# 8. opener , Cookie ,
opener.open(request)
# 9. opener Cookie ,
response = opener.open("http://www.renren.com/965722397/profile")
# cookie
#headers = {
# 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:59.0) Gecko/20100101 #Firefox/59.0',
#}
# request = urllib.request.Request('http://www.renren.com/965722397/profile',headers=headers)
# response = urllib.request.urlopen(request)
# 10.
#
print(response.code)
html = response.read()
# print(html)
with open('renren.html','wb') as f:
f.write(html)