原本寫法是先取得SESSION_ID 之後透過POST則可登入
正常情況這時右上角會出現安全退出 有找到則為登入狀態
可能是站方反爬蟲的原因 雖然一樣有取得SESSION_ID 但卻requset 405
想問問有沒有高手可以破解的?
#登入頁面取得,動態產生的PAGE_SESSION_ID
headers = {'User-Agent':'User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'}
s = requests.session()
URL = 'http://www.51bxg.com/web/login_register/login.aspx'
r = s.get(URL, headers=headers)
r.encoding = "utf-8"
sp = BeautifulSoup(r.text, 'lxml')
rt_msg = str(sp.find('script', type="text/javascript"))
#print(rt_msg)
m = re.search('var _PAGE_SESSION_ID=[\d]+', rt_msg, flags = 0)
pg_ssid = str(m.group()).replace("var _PAGE_SESSION_ID=","")
#print(pg_ssid)
#網站登入
URL = 'http://www.51bxg.com/api_web/WebCommon/PostUserLogin?'
URL += 'z_access_mode=web_service&'
URL += 'session_page_id=' + str(pg_ssid) + '&'
URL += 'has_req_data=true&retry_num=0'
arg_pload = '{"loginName":"' + acc_id + '","loginPwd":"' + acc_pwd + '","autoLogin":false}'
payload = {
"z_data": arg_pload
}
r = s.post(URL, data=payload, headers=headers)
#測試是否登入成功
URL = 'http://www.51bxg.com/'
r = s.get(URL, headers=headers)
r.encoding = "utf-8"
sp = BeautifulSoup(r.text, 'html.parser')
print(sp)
sp.findAll('div', attrs={'class': 'dc_data_list'})
flag = r.text.find('安全退出')
通常爬蟲出錯時,應該先去看status_code判斷是發生怎樣的問題,你可以先加上以下這行檢查
print(r.status_code)
至於你失敗的理由則是你錯誤地使用http作為進行連線,你應該將網址改成https