爬虫類入門-03-12306公式サイト登録詳細
爬虫類入門-12306公式サイト登録詳細
まず、ブラウザでパッケージをつかむことで、ログインの流れ、url、パラメータなどを明らかにします.
ログイン=POSTリクエストを要求要求url(str) 要求方式(str) パラメータ(str,bytes) 検証コード検証-https://kyfw.12306.cn/passport/captcha/captcha-check-POST-パラメータ:answer:52,36117,68 login_site:E rand:sjrand
検証コードの開発 1.数値または文字列 2.文字と数字で画像を生成し、ブラウザ(ノイズ、色、フォント) にロードします. 3.座標型検証コード(スライド、文字による文字検索、文字による画像検索)機械原形(画像認識、分詞、中国語語語検索マッチング画像) 12306圧力計算圧力(各駅にチケットがあるかどうか) キャッシュできない(大量のデータベース操作) コード実装を開始します
まず、ブラウザでパッケージをつかむことで、ログインの流れ、url、パラメータなどを明らかにします.
ログイン=POSTリクエストを要求
検証コードの開発
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib, urllib2
import ssl # 12306 , 12306
import cookielib # cookie
# ,12306
ssl._create_default_https_context = ssl._create_unverified_context
c = cookielib.LWPCookieJar() #
cookie = urllib2.HTTPCookieProcessor(c)
'''
urlopen , urlopen cookie
opener
'''
opener = urllib2.build_opener(cookie)
urllib2.install_opener(opener)
headerLoging = {
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
}
def login():
#
req = urllib2.Request(
"https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.6246852095798301")
req.headers = headerLoging
imgCode = opener.open(req).read() #
with open("code.png", "wb") as fn:
fn.write(imgCode)
#
req = urllib2.Request("https://kyfw.12306.cn/passport/captcha/captcha-check")
req.headers = headerLoging #
code = raw_input(" :")
data = {# answer
"answer": code,
"login_site": "E",
"rand": "sjrand"
}
data = urllib.urlencode(data) #
html = opener.open(req, data).read()
#
print html
login()