どうすればいいですか?特定のリンクを(urllibを使用して)入力しようとしましたが、それを行うにはログインする必要があります。
私はサイトからこのソースを持っています:
<form id="login-form" action="auth/login" method="post">
<div>
<!--label for="rememberme">Remember me</label><input type="checkbox" class="remember" checked="checked" name="remember me" /-->
<label for="email" id="email-label" class="no-js">Email</label>
<input id="email-email" type="text" name="handle" value="" autocomplete="off" />
<label for="combination" id="combo-label" class="no-js">Combination</label>
<input id="password-clear" type="text" value="Combination" autocomplete="off" />
<input id="password-password" type="password" name="password" value="" autocomplete="off" />
<input id="sumbitLogin" class="signin" type="submit" value="Sign In" />
これは可能ですか?
twill ( mechanize に基づいています)を使用したい場合があります。それは非常に使いやすく、あなたが望むことをすることができるはずです。
次のようになります。
from twill.commands import *
go('http://mysite.org')
fv("1", "email-email", "blabla.com")
fv("1", "password-clear", "testpass")
submit('0')
showforms()
を使用してログインするサイトを参照すると、go(...)
を使用してすべてのフォームを一覧表示できます。 pythonインタープリターから試してみてください。
簡単にするために、サイトのURLがwww.example.comで、ユーザー名とパスワードを入力してサインアップする必要があるとします。ログインページにアクセスします http://www.example .com/login.php 今、ソースコードを表示し、フォームタグのようなアクションURLを検索します
<form name="loginform" method="post" action="userinfo.php">
userinfo.phpを使用して、 ' http://example.com/userinfo.php 'となる絶対URLを作成し、単純なpythonスクリプトを実行します。
import requests
url = 'http://example.com/userinfo.php'
values = {'username': 'user',
'password': 'pass'}
r = requests.post(url, data=values)
print r.content
いつか誰かの助けになることを願っています。
通常、サイトにログインするにはcookieが必要です。つまり、cookielib、urllib、urllib2です。 Facebook Webゲームをプレイしていたときに書き戻したクラスを次に示します。
import cookielib
import urllib
import urllib2
# set these to whatever your fb account is
fb_username = "[email protected]"
fb_password = "secretpassword"
class WebGamePlayer(object):
def __init__(self, login, password):
""" Start up... """
self.login = login
self.password = password
self.cj = cookielib.CookieJar()
self.opener = urllib2.build_opener(
urllib2.HTTPRedirectHandler(),
urllib2.HTTPHandler(debuglevel=0),
urllib2.HTTPSHandler(debuglevel=0),
urllib2.HTTPCookieProcessor(self.cj)
)
self.opener.addheaders = [
('User-agent', ('Mozilla/4.0 (compatible; MSIE 6.0; '
'Windows NT 5.2; .NET CLR 1.1.4322)'))
]
# need this twice - once to set cookies, once to log in...
self.loginToFacebook()
self.loginToFacebook()
def loginToFacebook(self):
"""
Handle login. This should populate our cookie jar.
"""
login_data = urllib.urlencode({
'email' : self.login,
'pass' : self.password,
})
response = self.opener.open("https://login.facebook.com/login.php", login_data)
return ''.join(response.readlines())
HTTPSまたはリダイレクトハンドラーは必ずしも必要ではありませんが、それらは害を与えず、オープナーをより堅牢にします。また、Cookieは必要ないかもしれませんが、投稿したフォームだけではわかりません。コメントアウトされた「Remember me」入力からのみ、あなたはそうするかもしれないと思う。
import cookielib
import urllib
import urllib2
url = 'http://www.someserver.com/auth/login'
values = {'email-email' : '[email protected]',
'password-clear' : 'Combination',
'password-password' : 'mypassword' }
data = urllib.urlencode(values)
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(
urllib2.HTTPRedirectHandler(),
urllib2.HTTPHandler(debuglevel=0),
urllib2.HTTPSHandler(debuglevel=0),
urllib2.HTTPCookieProcessor(cookies))
response = opener.open(url, data)
the_page = response.read()
http_headers = response.info()
# The login cookies should be contained in the cookies variable
詳細については、 https://docs.python.org/2/library/urllib2.html をご覧ください。
webbot
は、動的に変化するIDとクラス名を持ち、Seleniumやmechanizeよりも多くのメソッドと機能を持つWebページでも動作します。
ここにスニペットがあります:)
from webbot import Browser
web = Browser()
web.go_to('google.com')
web.click('Sign in')
web.type('[email protected]' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^
ドキュメントも非常に簡単で使いやすいです。 https://webbot.readthedocs.io
一般に、Webサイトはさまざまな方法で承認を確認できますが、ターゲットにしているWebサイトを使用すると、合理的に簡単に確認できるようです。
必要なのは、POST
にauth/login
URLに、そこに表示されるさまざまなフィールドを持つフォームエンコードされたblobにすることです(ラベルfor
を忘れて、それらは人間の訪問者のための装飾です)。 handle=whatever&password-clear=pwd
など、ハンドル(電子メールとも呼ばれます)とパスワードの値を知っている限り、問題ありません。
おそらく、[POST] _は、セッションを検証するSet-Cookie
ヘッダーを持つ「ログインに成功しました」ページにリダイレクトします(そのCookieを保存し、セッション!)。
HTTPの場合、現在の選択肢は Requests- HTTP for Humans である必要があります