無料の推奨事項: Python ビデオ チュートリアル
Python クローラーを作成すると、ログイン時に認証コードの入力が必要になったり、ログイン時に画像のドラッグやその他の認証が必要になったりするなど、ログインに関する問題が発生しました。このような問題を解決するにはどうすればよいですか?一般に、2 つのオプションがあります。
Cookie を使用してログインする
Cookie を使用してログインできます。まずブラウザの Cookie を取得し、次にリクエスト ライブラリを使用して Cookie に直接ログインします。サーバーはユーザーがそうであると認識します。実際にログインしているユーザーなので、ログイン状態が返されます。このメソッドは非常に便利です。基本的に、ログインに確認コードが必要な Web サイトのほとんどは、Cookie ログインによって解決できます。
#! -*- encoding:utf-8 -*- import requests import random import requests.adapters # 要访问的目标页面 targetUrlList = [ "https://httpbin.org/ip", "https://httpbin.org/headers", "https://httpbin.org/user-agent", ] # 代理服务器 proxyHost = "t.16yun.cn" proxyPort = "31111" # 代理隧道验证信息 proxyUser = "username" proxyPass = "password" proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % { "host": proxyHost, "port": proxyPort, "user": proxyUser, "pass": proxyPass, } # 设置 http和https访问都是用HTTP代理 proxies = { "http": proxyMeta, "https": proxyMeta, } # 访问三次网站,使用相同的Session(keep-alive),均能够保持相同的外网IP s = requests.session() # 设置cookie cookie_dict = {"JSESSION":"123456789"} cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True) s.cookies = cookies for i in range(3): for url in targetUrlList: r = s.get(url, proxies=proxies) print r.text 若存在验证码,此时采用resp**e = requests_session.post(url=url_login, data=data)是不行的,做法应该如下: resp**e_captcha = requests_session.get(url=url_login, cookies=cookies)resp**e1 = requests.get(url_login) # 未登陆resp**e2 = requests_session.get(url_login) # 已登陆,因为之前拿到了Resp**e Cookie!resp**e3 = requests_session.get(url_results) # 已登陆,因为之前拿到了Resp**e Cookie!
模擬ログイン
ここで古いことわざを言わせていただきますが、祖先は木を植え、子孫は日陰を楽しんでいます。当時、志胡燕軒の記事を読みたかったのですが、ログインで止まってしまいました。検索した結果、ログインをシミュレートするためのライブラリを見つけたので、これは非常に優れています。
具体的なアイデアは、リクエストを通じてログインをシミュレートし、検証コードを返し、その検証コードを渡して正常にログインすることです。
以上がPython クローラー Web ページ ログインの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。